Skip to main content
 首页 » 编程设计

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

2024年09月07日41三少

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

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

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

这是我的视频博客 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 的最新信息。

请您参考如下方法:

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

这是我的 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', 
    .... 
] 

这是视觉表示: