我有一系列与此模型相同的模型:
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())
问题是我不知道你的情况如何。有人可以帮我吗?