以django的形式显示全名,而不是用户名
问题描述:
我有一个Django应用程序,其活动和对象具有外键给在django.contrib.auth.models中定义的用户对象。在这样做的时候,我得到了用户的username
属性,这是登录ID。以django的形式显示全名,而不是用户名
由于User对象存储全名,因此如何在表单上使ChoiceField显示用户的全名,而不是用户名,但在表单被张贴后仍然将其链接回正确的User对象?
答
没有绝对的把握以下几项工作,如果你有一个普通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())
答
要添加到以前的答案,如果你试图修改窗体在管理员然后XYZForm类应该继承forms.ModelForm和admin.py你应该做一个XYZAdmin类的形式属性= XYZForm
谢谢 - 正是我在找... – 2009-07-06 15:26:51