2016-12-15 62 views
0

在ModelForm中,我希望让用户从所有用户的姓氏列表中选择一个用户。阅读docs on ModelChoiceField后,我想我会使用以下方法:ModelChoiceField:显示包含所选对象的属性的列表

(在forms.py一个的ModelForm):

myfield = forms.ModelChoiceField(queryset=User.objects.all(), to_field_name="last_name") 

然而,效果是我一直的形式,用户从列表中选择一个选项用户名,而不是姓。我究竟做错了什么?

+1

作为链接到状态的文档,'to_field_name'更改基础值,而不是显示值。为了改变这种情况,您需要对字段进行子类化并修改'label_from_instance',如该文档中所示。 –

+0

非常感谢。我明显误解了这一点。 –

回答

1

就像在documentation提到:

to_field_name

此可选参数用于指定字段作为该领域的插件的选择的value使用。

当您使用last_name作为to_field_name你会看到它在option标签的value属性而不是显示:

<option value="obj1.last_name">Object1</option> 

的文档还提到了你需要的情况下,做你想做什么改变这些选项的显示:

该模型的__str____unicode__)模型的方法将被调用到g在领域的选择中使用对象的字符串表示;提供定制的表示,子类ModelChoiceField和覆盖label_from_instance

相关问题