基于另一个布尔列使用 Django-Tables2 格式化列

Format Column with Django-Tables2 based on another boolean column

我有一个 table,其中有几列,其中一列称为 commune,是字符串类型,另一列是 confiance_commune,它是一个布尔值。

如果 confiance_commune 为真,我希望 commune 呈现为粗体和绿色。

这是我的代码:

models.py

class Mrae(models.Model):
    titre = models.TextField(blank=True, null=True)
    lien = models.TextField(blank=True, null=True)
    description = models.TextField(blank=True, null=True)
    type_projet = models.TextField(blank=True, null=True)
    pv_mentionne = models.BooleanField(blank=True, null=True)
    commune = models.TextField(blank=True, null=True)
    commune_m = models.TextField(blank=True, null=True)
    departement = models.IntegerField(blank=True, null=True)
    date = models.DateField(blank=True, null=True)
    confiance_commune = models.BooleanField(blank=True, null=True)
    index = models.AutoField(primary_key=True)

    class Meta:
        managed = False
        db_table = 'mrae'

tables.py

from django_tables2 import tables
from django_tables2.columns import URLColumn
from .models import Mrae

class MraeTable(tables.Table):
    
    lien = URLColumn("Lien") 
    
    class Meta:
        model = Mrae
        attrs = {"class": "table table-responsive"}
        fields = ['titre', 'lien', 'pv_mentionne', 'date', 'commune', 'departement']
        tamplate_name = "django_tables2/bootstrap-responsive.html"

您可以使用调用记录的自定义呈现函数,然后只需创建一个简单的 if 语句来检查 confiance_commune 属性以设置 commune 数据的样式。

https://django-tables2.readthedocs.io/en/latest/pages/custom-data.html#table-render-foo-methods

class MraeTable(tables.Table):
    
    lien = URLColumn("Lien") 
    
    class Meta:
        model = Mrae
        attrs = {"class": "table table-responsive"}
        fields = ['titre', 'lien', 'pv_mentionne', 'date', 'commune', 'departement']
        template_name = "django_tables2/bootstrap-responsive.html"

    def render_commune(self, record):
        if record.confiance_commune:
            return format_html(
                    "<span style='color:green;font-weight:bold;'>{}</span>", 
                    mark_safe(record.commune)
                )
        return mark_safe(record.commune)