在 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 admin 中显示多个模型的更改列表?