我有一個Django應用程序,其活動和對象具有外鍵給在django.contrib.auth.models中定義的用戶對象。在這樣做的時候,我得到了用戶的username
屬性,這是登錄ID。以django的形式顯示全名,而不是用戶名
由於User對象存儲全名,因此如何在表單上使ChoiceField顯示用戶的全名,而不是用戶名,但在表單被張貼後仍然將其鏈接回正確的User對象?
我有一個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