在 django 管理模型列表中,为方法的返回值显示“是/否”

Posted

技术标签:

【中文标题】在 django 管理模型列表中,为方法的返回值显示“是/否”【英文标题】:in django admin model listing, Display 'Yes/No' for method's return value 【发布时间】:2019-12-17 05:03:24 【问题描述】:

我正在 dJango 项目网站上学习 django admin,我想在管理列表页面中显示“是/否”而不是 True/False 图标。这些值来自 AdminModel 中定义的方法。

模型类中有一个返回 True/False 的方法。在 django 中有一个属性“boolean”,当分配为“True”时,它会在管理列表页面上显示红色和绿色的图标。

**class** Question(models.Model):
    pub_date = models.DateTimeField('date published')
    def was_published_recently(self):
        now = timezone.now()
        **return** now - datetime.timedelta(days=1) <= self.pub_date <= now
    was_published_recently.boolean = True

【问题讨论】:

【参考方案1】:

我认为您必须为此编写一个自定义方法:

class QuestionAdmin(ModelAdmin):
    list_dipslay = [..., 'recently_published']
    readonly_fields = [..., 'recently_published']
    # ...
    def recently_published(self, obj):
        return ('No', 'Yes')[obj.was_published_recently()]
    recently_published.short_description = 'whatever column header'

据我所知,没有方便的挂钩可以全局更改布尔字段列表的显示行为。

【讨论】:

以上是关于在 django 管理模型列表中,为方法的返回值显示“是/否”的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 的管理界面中很好地显示日期

django 管理列表中的外键显示

如何在 django admin 中显示多个模型的更改列表?

Django Admin Cookbook-14如何在Django Admin后台移除“删除所选”操作

django 模型 - 管理员可以将变量添加到表中吗?

在管理界面上向 Django 内联对象添加自定义操作