2010-06-18 70 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 
相关问题