我正在开发一个Django应用程序。我的一个模型“用户”包括一个“性别”字段,定义如下:
GENDER_CHOICES = (
('M', 'Male'),
('F', 'Female'),
)
gender = models.CharField(max_length=1, choices=GENDER_CHOICES, null=True)
我正在使用ModelForm生成“新用户”HTML表单。我的Google-fu似乎让我失望了 - 如何让这个HTML表单在下拉框中默认选中“Male”项? (即此项目为selected="selected"
。)
答案 0 :(得分:16)
如果您需要一个选定默认值的空白表单,请使用您的字段名称作为键将“初始”字典传递给模型表单的构造函数:
form = MyModelForm (initial={'gender':'M'})
-OR -
您可以使用Forms API的声明性质覆盖ModelForm的某些属性。但是,对于这个用例来说这可能有点麻烦,我提到它只是为了告诉你你可以做到这一点。您可能会在将来找到其他用途。
class MyModelForm (forms.ModelForm):
gender = forms.ChoiceField (choices=..., initial='M', ...)
class Meta:
model=MyModel
-OR -
如果您想要一个绑定到模型的特定实例的ModelForm,您可以传递模型的“实例”,这会导致Django从该模型中提取所选值。
form = MyModelForm (instance=someinst)
答案 1 :(得分:8)
肯定default
会做到这一点吗?
e.g。
gender = models.CharField(max_length=1, choices=GENDER_CHOICES, default='M', null=True)