从 django admin list_display 访问,来自一对一表的值

Posted

技术标签:

【中文标题】从 django admin list_display 访问,来自一对一表的值【英文标题】:Access from django admin list_display, a value from a One-To-One table 【发布时间】:2014-01-06 07:47:28 【问题描述】:

给定一个模型的一对一扩展,例如 Django User 模型:

class UserProfile(models.Model):
     user        = models.OneToOneField(User, related_name='profile', unique=True)
     avatar      = models.ImageField(_('Avatar'))
     foo         = models.CharField(max_length=100, verbose_name="xxx")

如何在后台显示?

class UserAdmin(admin.ModelAdmin):
     list_display = ('email', 'profile__foo' <--NOT WORKING )

一个近似匹配问题是Django Admin: How to display value of fields with list_display from two models which are in oneToOne relation?

【问题讨论】:

【参考方案1】:

一般的方法是:

class UseAdmin(admin.ModelAdmin):
    list_display = ('email', 'profile_foo')
    def profile_foo(self, x):
        return x.profile.foo
    profile_foo.short_description = 'foo'

这里的x是你正在显示的模型的对象

【讨论】:

如果您希望它是可编辑的列表怎么办?

以上是关于从 django admin list_display 访问,来自一对一表的值的主要内容,如果未能解决你的问题,请参考以下文章

从 Django-admin 中删除默认应用程序

Part 7:自定义admin站点--Django从入门到精通系列教程

从 django admin 重新排序导航栏

Django Admin——批量员工用户创建/从 CSV 文件导入

Django如何重设Admin密码(转)

Django:有没有办法从 mail_admins 日志处理程序中过滤掉 503“服务不可用”响应?