Django admin:根据内容更改单元格值颜色

2024-04-25 20:58:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用的是django admin,我想更改“estado_material”字段值的字体颜色,如果它们可用“Disponible”或“En préstamo”。我的模型.py公司名称:

from django.db import models

class Material(models.Model):
    identificacion=models.CharField(max_length=30, verbose_name='Identificación del material')
    num_com=models.CharField(max_length=30, verbose_name='Número')
    nombre_sp=models.CharField(max_length=30, verbose_name='Nombre científico')
    coleccion=models.CharField(max_length=30, verbose_name='Colección')
    descripcion=models.CharField(max_length=1000, verbose_name='Descripción')
    localidad=models.CharField(max_length=30, verbose_name='Localidad')
    estratigrafia=models.CharField(max_length=1000, verbose_name='Estratigrafía')
    colector=models.CharField(max_length=130, verbose_name='Colector/es')
    observaciones=models.CharField(max_length=1000, verbose_name='Observación')
    ubicacion=models.CharField(max_length=130, verbose_name='Ubicación')
    class Meta:
         verbose_name = "Material"
         verbose_name_plural = "Materiales"

    def __str__(self):
        return self.num_com

    def estado_material(self):
        if Prestamos.objects.filter(material__num_com=self.num_com).exists():
            return "En préstamo"
        else:
            return "Disponible"

还有我的管理员py公司名称:

^{pr2}$

Tags: djangonameselfcomverbosereturnmodelslength
1条回答
网友
1楼 · 发布于 2024-04-25 20:58:34

使用django.utils.html中的format_html方法,可以将estado_material更改为如下内容:

from django.utils.html import format_html
...
    def estado_material(self):
        if Prestamos.objects.filter(material__num_com=self.num_com).exists():
            result = "En préstamo"
        else:
            result = "Disponible"
        return format_html('<span style="color: {};">{}</span>',
                       'green' if  result == 'Disponible' else 'red',
                       result)

在将Django 1.9allow_tags属性添加到方法以防止自动转义之前,它现在已被弃用,format_html就足够了。在

相关问题 更多 >