Отображать цвет фона в зависимости от условий в шаблоне Django

Рассмотрим цветовые коды

красный - #FFDADA янтарный - #FFC200 зелёный - #90EE90 золотой - #FFFF00

вот мой index.html

 <td style="background-color:{% if qualification.is_past_due %}#FFDADA{% elif qualification.is_past_month %}#FFC200{% elif not qualification.validated %} #FFFF00 {% else %}#90EE90{% endif %};"

Вот если

qualification is is_past_due = red
if qualification is is_past_month (near to expire 30 days) = amber
if qualification date is in future and qualification.validate = Green
if qualification.expiry date is in future and not qualification.validate = Gold
if no expiry_date the white

рассмотрим мой models.py

class Qualification(models.Model):
    
    expiry_date = models.DateField(null=True,verbose_name="Expiry Date", blank=True)
    validated = models.BooleanField(default=False)

def is_past_due(self):
    try:
        date1 = datetime.combine(self.expiry_date, datetime.min.time())
        date2 = pytz.utc.localize(date1)
        return date2 and  timezone.now().date() > localtime(date2, timezone=self.user.get_user_timezone()).date()
    except:
        return ''

def is_past_month(self):
    try:
        expiry_date = self.expiry_date+relativedelta(months=-1)
        date1 = datetime.combine(expiry_date, datetime.min.time())
        date2 = pytz.utc.localize(date1)
        return date2 and  timezone.now().date() > localtime(date2, timezone=self.user.get_user_timezone()).date()
    except:
        return ''

def today_date(self):
    try:
        today = timezone.now().date()
        return today
    except:
        return ''


class Meta:
    ordering = ['expiry_date']

Рассмотрим записи моей базы данных как

id  expiry_date  validated

1   08-11-2019     1    (# alredy expired so red)
2   24-11-2021     0    (# near to expiry so amber )
3   22-12-2021     1    (# future date and validated(1) so green )
4   28-12-2021     0    (# future date and not validated(0) so gold )

В настоящее время в моем коде я проверяю только то, подтвержден он или нет, но теперь мне нужно проверить будущий срок действия и подтверждение также

Вернуться на верх