在ModelForm中,我想让用户从所有用户的last_names列表中选择一个用户。阅读docs on ModelChoiceField之后我想我会使用以下内容:
(在forms.py中的ModelForm中):
myfield = forms.ModelChoiceField(queryset=User.objects.all(), to_field_name="last_name")
然而,效果是我的表单让用户从用户名列表中选择一个选项,而不是姓氏。我做错了什么?
答案 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
。