ModelChoiceField:显示包含所选对象的attritbutes的列表

时间:2016-12-15 11:25:27

标签: python django

在ModelForm中,我想让用户从所有用户的last_names列表中选择一个用户。阅读docs on ModelChoiceField之后我想我会使用以下内容:

(在forms.py中的ModelForm中):

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

然而,效果是我的表单让用户从用户名列表中选择一个选项,而不是姓氏。我做错了什么?

1 个答案:

答案 0 :(得分:1)

documentation中提到的那样:

  

<强> to_field_name

     

此可选参数用于指定要用作字段小部件中选项的value的字段。

当您使用last_name作为to_field_name时,您会在value标记的option属性中看到它而不是显示内容:

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

文档还提到了在您想要更改这些选项的显示时需要执行的操作:

  

将调用模型的__str__({2}上的__unicode__)方法来生成对象的字符串表示,以便在字段的选择中使用;提供自定义表示,子类ModelChoiceField和覆盖label_from_instance