首页 > 解决方案 > 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'

标签: djangodjango-formsmodelform

解决方案


如果您想修复此属性错误,您可以将您的选择作为 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

推荐阅读