2009-07-06 143 views
4

我有一個Django應用程序,其活動和對象具有外鍵給在django.contrib.auth.models中定義的用戶對象。在這樣做的時候,我得到了用戶的username屬性,這是登錄ID。以django的形式顯示全名,而不是用戶名

由於User對象存儲全名,因此如何在表單上使ChoiceField顯示用戶的全名,而不是用戶名,但在表單被張貼後仍然將其鏈接回正確的User對象?

回答

14

沒有絕對的把握以下幾項工作,如果你有一個普通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()) 
+0

謝謝 - 正是我在找... – 2009-07-06 15:26:51

0

要添加到以前的答案,如果你試圖修改窗體在管理員然後XYZForm類應該繼承forms.ModelForm和admin.py你應該做一個XYZAdmin類的形式屬性= XYZForm

相關問題