class Lab(Model):
responsible = ForeignKey(User)
这是我的 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)
类似的东西。我没有测试它,所以可能会有一些错别字。希望这对您有所帮助!
关于python - 在 Django 管理中显示用户外键的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18911410/