Django Model Admin-交通灯警报

时间:2019-03-19 20:02:22

标签: python django python-3.x django-models django-views

我有一系列与此模型相同的模型:

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'

paper字段由一个外键组成,该外键连接到另一个具有名为traffic_light的字段的模型。

当模型中的日期字段过期(黄色),过期(红色)和未过期(绿色)时,我需要一个函数来用红绿灯通知我(红色,黄色,绿色),以便进行比较今天的交通信号灯为红色和绿色;并使用alert_warnig_gg字段(在此处输入标记黄灯之前的天数)。

我希望在模型Paper的traffic_light字段中标记该函数的结果。

目前,我已经在单个模型上测试了此功能,以便在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())

问题是我不知道你的情况如何。有人可以帮我吗?

0 个答案:

没有答案