Django,ModelChoiceField()和初始值
我正在使用这样的东西:
field1 = forms.ModelChoiceField(queryset=...)
我怎样才能让我的表单显示一个选定的值?
如果你想设置默认的初始值,你应该像其他表单字段一样定义初始值,除非你将其设置为id 。
假设你有这样的field1
:
class YourForm(forms.Form): field1 = forms.ModelChoiceField(queryset = MyModel.objects.all() )
那么当你像这样创build你的表单时,你需要设置初始值:
form = YourForm(initial = {'field1': instance_of_mymodel.pk })
而不是:
form = YourForm(initial = {'field1': instance_of_mymodel })
我也假设你已经为你的模型定义了__unicode__
,所以这个显示正确。
你可以使用
field1 = forms.ModelChoiceField(queryset=..., initial=0)
使第一个值被选中等等。这是更一般的方法,然后是另一个答案。
他们改变的时代:
现在可以通过像其他表单字段一样定义初始值来设置默认初始值 除非您将其设置为id 。
现在这就足够了:
form = YourForm(initial = {'field1': instance_of_mymodel })
虽然两个仍然工作。
代码
form = YourForm(initial = {'field1': instance_of_mymodel.pk })
和
form = YourForm(initial = {'field1': instance_of_mymodel })
或者直接在下面的初始字段
field1 = forms.ModelChoiceField(queryset=..., initial=0)
所有的工作。
前两种方法将覆盖最后的方式。
你也可以这样做:
form = YourForm(initial = {'field1': pk })
如果通过查询string或通过ajax调用parsing主键,则不需要实例,查询集已经处理了您的下拉列表,pk索引您想要的状态