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

时间:2019-08-09 12:42:55

标签: python django django-models

我正在dJango项目站点上学习django管理员,我想在管理列表页面中显示“是/否”而不是“真/假”图标。这些值来自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 个答案:

答案 0 :(得分:0)

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

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'

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