django - Django Modelforms:如何显示 CharField 的选择?
问题描述
我在 Django 中使用 ModelForms 来创建我的表单。这很好用。但是,数据库中有一个字段是字符字段,但对于特定表单,我想将用户可以输入的选项限制为特定项目列表 - 理想情况下显示在<select>
. 这样做的正确方法是什么?这是我的代码:
form = ModelForm(request.POST or None, instance=Street.objects.get(pk=1))
在我的模型中:
class Street(models.Model):
name = models.CharField(max_length=255)
我尝试了以下方法:
from django import forms
CHOICES = [('1', 'First'), ('2', 'Second')]
choice_field = forms.ChoiceField(widget=forms.Select, choices=CHOICES)
form.fields["street"].widget = choice_field
这给出了这个错误:
'ChoiceField' object has no attribute 'attrs'
解决方案
如果您想修复此属性错误,您可以将您的选择作为 python 元组传递或设置 TypedChoiceField() 并为其提供属性强制引用:https ://stackoverflow.com/a/18200849/14127147
from django import forms
CHOICES = (("1", "First"), ("2", "Second"))
choice_field = forms.ChoiceField(widget=forms.Select, choices=CHOICES)
form.fields["street"].widget = choice_field
推荐阅读
- c++ - 如何在 VSCode 中启用颜色字符串附近的颜色框
- r - 如何在 x 轴上移动以不与异质性信息重叠?R中的森林图
- templates - 从嵌套 yaml 中获取值的 helm 模板不起作用
- javascript - Chart.js 从图例中删除数据集值的标签
- javascript - flex 时填充/重新排列空白空间:0 0 50%;是否可以在网格中动态使用?
- google-bigquery - Bigquery 随时间的累积总和查询形成
- c++ - 将左移运算符 << 重载到对象
- flutter - getx是如何实现`.obs`的东西的
- reactjs - 除非明确输入,否则 WebStorm 不会检测到 React 导入
- javascript - 为什么在实现全局范围状态时我会使用“useReduce”来做出反应?