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 字段,也没有可注释