python - 如何以 Django 表单显示下拉列表?
问题描述
我对下拉列表的显示有疑问,它是 Django 表单的字段部分。它不是一个普通的下拉列表,而是一种多选框(至少,它和这种对象一样高,如下面的屏幕截图所示),具有下拉功能(打开的小箭头选择列表)。
我不明白为什么它看起来像这样以及如何解决这个问题。
编辑
我将当前版本投入生产,用于测试和演示目的,令人惊讶的是,它可以正常工作,下拉列表显示正确(在本地环境中仍然很难看)
如果有人对此有解释/解决方案,欢迎他
我尽可能使用标准对象(我对 CSS 不太满意),在这种情况下,我没有设法更新任何东西(事件设置height
没有影响,也许这部分也有问题)
而且我可以理解我的问题并不完美,但请解释我有什么问题让我添加缺失的信息(我仍然不明白为什么我们不能提前感谢那些会在这里阅读并尝试解决问题的人,但这是另一个问题...可能会在没有任何解释或评论的情况下进行编辑)
相关模型字段定义如下:
class Company(models.Model):
"""
Company informations
- Detailed information for display purposes in the application
but also used in documents built and sent by the application
- Mail information to be able to send emails
"""
company_name = models.CharField("nom", max_length=200)
comp_slug = models.SlugField("slug")
rules = [("MAJ", "Majorité"), ("PROP", "Proportionnelle")] # Default management rule
rule = models.CharField(
"mode de scrutin", max_length=5, choices=rules, default="MAJ"
)
表单没有专门的规则,即使尝试添加一些(在下面的代码中保留为注释):
class CompanyForm(forms.ModelForm):
company_name = forms.CharField(label="Société", disabled=True)
# rules = [("MAJ", "Majorité"), ("PROP", "Proportionnelle")]
# rule = forms.ChoiceField(label="Mode de scrutin", choices=rules)
class Meta:
model = Company
exclude = []
这是视图:
@user_passes_test(lambda u: u.is_superuser or u.usercomp.is_admin)
def adm_options(request, comp_slug):
'''
Manage Company options
'''
company = Company.get_company(comp_slug)
comp_form = CompanyForm(request.POST or None, instance=company)
if request.method == "POST":
if comp_form.is_valid():
comp_form.save()
return render(request, "polls/adm_options.html", locals())
以及 HTML 代码的一部分:
<div class="row border mt-4">
<div class="col-sm-12">
<h5>Préférences de l'application</h5>
<div class="row">
<div class="col-sm-5 mt-2">
{{comp_form.use_groups}} <label for="{{comp_form.use_groups.label}}">{{comp_form.use_groups.label}}
</div>
<div class="col-sm-7 mt-2">
<p><label for="{{comp_form.rule.label}}">{{comp_form.rule.label}}</label> : {{comp_form.rule}}</p>
<p>{{comp_form.upd_rule}} <label for="{{comp_form.use_groups.label}}">{{comp_form.upd_rule.label}}</p>
</div>
</div>
</div>
</div>
我做错了什么?我怎样才能改变它(在视图或 HTML/CSS 中)?
解决方案
在您的Company
模型中,您只使用了两种选择:
rules = [("MAJ", "Majorité"), ("PROP", "Proportionnelle")]
在 HTML 中呈现此模型表单时,应该只有两个选项。如果你想要可能的选项,你应该修改你的模型。
推荐阅读
- javascript - 比较javascript中的两个单词无法正常工作
- node.js - 节点无法生成 JWT
- php - 我只想在客户登录时重定向到 Magento 页面(产品/类别等)。否则它应该重定向到客户登录页面
- javascript - 如何确保在加载地图时它始终自动处于卫星类型
- swiftui - 如何从 SwiftUI 的子视图中调用函数?
- c++ - 扭曲和闪烁的纹理,白色矩形 - SFML C++
- string - 如何从给定的 LCS 生成两个随机字符串?
- c++ - 创建线程总是对性能有好处吗?
- snowflake-cloud-data-platform - STREAM 未从存储过程创建的任务中消耗
- angular - 如何在角度通用应用程序中在运行时获取“i18nLocale”的值?