class Lab(Model):
responsible = ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)
这是我的Django模型的一个非常简化的版本.基本上问题出在Django管理员,当我想编辑或添加一个新Lab对象时,包含User对象的下拉列表只显示User.username值,在我的情况下只是数字.
我希望下拉列表显示User.last_name值.
我怎样才能做到这一点?
您必须为实验室管理员定义自己的用户选择字段.
from django import forms
from django.contrib import admin
class UserChoiceField(forms.ModelChoiceField):
def label_from_instance(self, obj):
return obj.last_name
# Now you have to hook this field up to lab admin.
class LabAdmin(admin.ModelAdmin):
def formfield_for_foreignkey(self, db_field, request=None, **kwargs):
if db_field.name == 'responsible':
kwargs['form_class'] = UserChoiceField
return super(LabAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
Run Code Online (Sandbox Code Playgroud)
这样的事情.我没有测试过,所以可能会有一些错别字.希望这可以帮助!