以django格式显示全名,而不是用户名
我有一个Django应用程序,其中的活动和对象具有Django.contrib.auth.models中定义的用户对象的外键。这样做,我得到了用户的以django格式显示全名,而不是用户名,django,django-forms,Django,Django Forms,我有一个Django应用程序,其中的活动和对象具有Django.contrib.auth.models中定义的用户对象的外键。这样做,我得到了用户的username属性,即登录id 既然User对象存储了全名,那么如何使表单上的ChoiceField显示用户的全名,而不是用户名,但在表单发布后仍将其链接回正确的用户对象?如果您有一个常规的ChoiceField,则不能绝对确定以下功能是否有效,但如果您有一个modelChoiceField,则可以执行以下操作: class UserModelCh
username
属性,即登录id
既然User对象存储了全名,那么如何使表单上的ChoiceField显示用户的全名,而不是用户名,但在表单发布后仍将其链接回正确的用户对象?如果您有一个常规的ChoiceField,则不能绝对确定以下功能是否有效,但如果您有一个modelChoiceField,则可以执行以下操作:
class UserModelChoiceField(forms.ModelChoiceField):
"""
Extend ModelChoiceField for users so that the choices are
listed as 'first_name last_name (username)' instead of just
'username'.
"""
def label_from_instance(self, obj):
return "%s (%s)" % (obj.get_full_name(), obj.username)
class XYZForm(forms.Form):
...
xyz = UserModelChoiceField(User.objects.all())
要添加到上一个答案中,如果您试图在admin中修改表单,那么XYZForm类应该从forms.ModelForm继承,而在admin.py中,您应该创建一个表单属性为xyzorm的XYZAdmin类