Django Model Admin交通灯A

2024-04-20 13:40:49 发布

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

我有一系列的模型都和这个一样:

class Documents(models.Model):
    id = models.AutoField(primary_key=True)
    paper = models.ForeignKey(
        'Paper', models.DO_NOTHING, blank=True, verbose_name='Paper')
    date = models.DateField('Date')
    expired_date = models.DateField('Expired Date')
    alert_warning_gg = models.SmallIntegerField(
        'Alert Warning gg', blank=True, null=True)
    enable = models.BooleanField('Enable')

    def __str__(self):
        return str(self.id) or ''

    class Meta:
        managed = False
        db_table = 'Documents'

纸张字段由一个外键组成,外键连接到另一个模型,该模型具有一个称为红绿灯的字段。你知道吗

我需要一个函数来通知我与交通信号灯(红,黄,绿)时,日期字段到期内的模型是到期(黄),到期(红)和未到期(绿),把它与今天的日期相比,交通信号灯红和绿;并使用警告警告\u警告\u gg字段(这里你输入的天数之前的黄色)指示灯已标记)。你知道吗

我想把函数的结果标在模型纸的红绿灯区域。你知道吗

现在我已经在一个模型上测试了这个函数,所以它在ModelAdmin的一列中给出了结果。你知道吗

def custom_column(self, obj):
    if obj.expired_date < datetime.datetime.now():
        retval = ('red.jpg')
    else
        retval = ('green.jpg')
    return "<img src='%s' alt='%s' />" % retval

custom_column.short_description = 'Status'

为了使它能在我想到的所有模型上工作,我需要扩展一个模型类并将这个函数插入其中。目前,我已经试图找到我正在使用的模型的实例和截止日期字段。你知道吗

class TrafficLight(Model):

    def expired_date(self):
        return 'expired_date'

    def alert_warning_gg(self):
        return 'alert_warning_gg'

    class Meta:
        abstract = True

@receiver(models.signals.post_save, sender=TrafficLight)
def expired_control(self, sender, instance, *args, **kwargs):
    instance_traffic_light(
        instance.related_model(),
        instance.paper,
        instance.expired_date(),
        instance.alert_warning_gg())

问题是我不知道你怎么样。有人能帮我吗?你知道吗


Tags: instance函数模型selftrue警告datereturn