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

use*_*774 3 python django django-admin

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

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

这是我的意思的直观示例,其中now日期为2018 年 1 月 16 日

在此处输入图片说明

这是我的 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:
        ....
Run Code Online (Sandbox Code Playgroud)

有这个类似的线程,但该线程已有 7 年以上的历史,我希望有关于 django 1.10 和 python 3.5 的最新信息。

use*_*774 5

这是答案 - 我希望这对某人有所帮助!

这是我的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:
        ....
Run Code Online (Sandbox Code Playgroud)

这是我的admin.py代码:

list_display = [
    u'id',
    #'vlog_date_published', # vlog_date_published now replaced by date_published.
    'date_published',
    'vlog_title',
    ....
]
Run Code Online (Sandbox Code Playgroud)

这是视觉表示:

在此处输入图片说明