在Django admin中显示User ForeignKey的字段

2 python django django-admin

class Lab(Model):
  responsible = ForeignKey(User)
Run Code Online (Sandbox Code Playgroud)

这是我的Django模型的一个非常简化的版本.基本上问题出在Django管理员,当我想编辑或添加一个新Lab对象时,包含User对象的下拉列表只显示User.username值,在我的情况下只是数字.

我希望下拉列表显示User.last_name值.

我怎样才能做到这一点?

ipe*_*kiy 5

您必须为实验室管理员定义自己的用户选择字段.

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)

这样的事情.我没有测试过,所以可能会有一些错别字.希望这可以帮助!