django-admin:如果条件为真,则将列字体更改为红色

时间:2018-01-16 01:34:22

标签: python django django-admin

我有一个vlog,我可以将vlog条目预加载到db中,这样当vlog-published-date的日期小于now的模型字段时,vlog条目将自动显示/发布

如果Vlog Date Published的日期大于vlog_published_date(尚未发布),如何将now字体的django-admin列设为红色?

以下是now日期 2018年1月16日的意思的可视化示例:

enter image description here

这是我的vlog models.py代码:

class VlogDetails(models.Model):
    ....
    vlog_date_published = models.DateField(null=False, blank=False, default=datetime.now, help_text='The date the vlog video will be made public.')
    ....

    class Meta:
        ....

有这个similar thread,但这个帖子已经有7年多了,我希望有更多关于django 1.10和python 3.5的信息。

1 个答案:

答案 0 :(得分:1)

这是答案 - 我希望这有助于somone!

这是我的 models.py 代码:

class VlogDetails(models.Model):
    ....
    vlog_date_published = models.DateField(null=False, blank=False, default=datetime.now, help_text='The date the vlog video will be made public.')
    ....

    # date published replaces vlog_date_published in the admin - displays red date when vlog not published.
    def date_published(self):
        if self.vlog_date_published > datetime.today().date():
            return format_html('<span style="color: #cc0033; font-weight: bold;">{0}</span>', self.vlog_date_published.strftime('%b. %d, %Y'))
        else:
            return format_html('<span style="color: #000;">{0}</span>', self.vlog_date_published.strftime('%b. %d, %Y'))

    date_published.allow_tags = True

    class Meta:
        ....

这是我的 admin.py 代码:

list_display = [
    u'id',
    #'vlog_date_published', # vlog_date_published now replaced by date_published.
    'date_published',
    'vlog_title',
    ....
]

这是视觉表现:

enter image description here