2010-06-18 68 views
1

我有一個任務列表,能夠分配用戶。所以我有數據庫中的用戶模型的外鍵。但是,默認顯示是在下拉菜單中的用戶名,我想顯示全名(倒數第一)而不是用戶名。如果外鍵指向我自己的類中的一個,我可以更改模型中的str函數,但User是django身份驗證模型,所以我不能直接輕鬆地直接更改它?如何在django中更改顯示文字admin foreignkey dropdown

任何人有任何想法如何做到這一點?

非常感謝!

回答

3

您可以爲您的工作模式,它會顯示你喜歡的用戶列表中選擇一個新的ModelForm(此代碼假定一個名爲任務模型與「用戶」屬性):

USERS = [(user, user.get_full_name()) for user in User.objects.all()] 

class TaskAdminForm(forms.ModelForm): 
    class Meta: 
     model = Task 
    user = forms.ChoiceField(choices=USERS) 

然後,告訴的ModelAdmin類以使用新的形式:

class TaskAdmin(admin.ModelAdmin): 
    form = TaskAdminForm 
0

還有另一種選擇:

USERS = [(user.id, user.get_full_name()) for user in User.objects.all()] 
USERS.insert(0, ('', '----')) 

class TaskAdminForm(forms.ModelForm): 
    def __init__(self, *args, **kwargs): 
    super(TaskAdminForm, self).__init__(*args, **kwargs) 
    self.fields['user'].choices=USERS 
相關問題