python - 在 Django 管理中显示用户外键的字段

标签 python django django-admin

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/

相关文章:

python - 如何使用元组查询 pandas 列

python - 构建 Django 多对多关系

python - Django: 'python manage.py runserver' 给出 "Segmentation fault"错误

python - 搜索问题并显示报告

django - 使用模型的 __unicode__ 作为管理表单中的搜索字段

python - 我们可以对数组与数组元素进行逻辑与运算吗?

python - Pyserial - 嵌入式系统

django - 将图像上传到 Django admin,进行裁剪和缩放,然后将其发送到 Amazon S3,而不在本地保存文件?

python - 查看来自 PID != 1 的日志

javascript - 仅显示月份和年份的 Django DateField 日历?