Django:如何在 list_display 中包含内联模型字段?

Posted

技术标签:

【中文标题】Django:如何在 list_display 中包含内联模型字段?【英文标题】:Django: how to including inline model fields in the list_display? 【发布时间】:2010-11-30 14:35:38 【问题描述】:

我正在尝试扩展 django 的 contrib.auth 用户模型,使用内联“配置文件”模型来包含额外的字段。

from django.contrib import admin
from django.contrib.auth.models import User
from django.contrib.auth.admin import UserAdmin

class Profile(models.Model):

  user = models.ForeignKey(User, unique=True, related_name='profile')
  avatar = '/images/avatar.png'
  nickname = 'Renz'

class UserProfileInline(admin.StackedInline):

  model = Profile

class UserProfileAdmin(UserAdmin):

  inlines = (UserProfileInline,)

admin.site.unregister(User)
admin.site.register(User, UserProfileAdmin)

这适用于管理员“更改用户”页面,但我找不到在 list_display 中添加内联模型字段的方法。仅在 list_display 中指定 Profile 字段的名称会给我一个错误:

UserProfileAdmin.list_display[4],'avatar' 不是 'UserProfileAdmin' 的可调用属性或属性,也不是在模型 'User' 中找到的。

我可以创建一个在 Profile 表中查找用户并返回相关字段的可调用对象,但这使我无法按内联字段对列表视图进行排序,而我确实需要这样做。

有什么建议吗?

【问题讨论】:

【参考方案1】:

您提到了唯一的解决方案 - 创建一个可调用对象。目前没有其他方法可以做到这一点,是的,这确实意味着您无法按该列排序。

【讨论】:

两年后还是这样吗?

以上是关于Django:如何在 list_display 中包含内联模型字段?的主要内容,如果未能解决你的问题,请参考以下文章

Django Admin:如何在 oneToOne 关系中的两个模型中显示带有 list_display 的字段值?

如何忽略在 django admin list_display 中加载巨大的字段?

如何允许在 Django 管理员中通过自定义 list_display 字段进行排序,该字段没有 DB 字段,也没有可注释

Django: list_display() 外键

在list_display django中显示子类的信息

相关内联上的python django list_display [重复]