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索引您想要的状态