Django queryset Datefield сравнение с сегодняшним днем
У меня есть модель, в которой есть начальная("inicia") и конечная("finaliza") дата, и мне нужно узнать, находится ли сегодняшний день между этими датами:
модель:
class Promos(models.Model):
nombre = models.CharField(max_length=20)
codigo = models.CharField(max_length=10, blank=True, null=True)
aplica_codigo = models.BooleanField(default=False)
descuento = models.FloatField()
porciento = models.BooleanField(default=False)
inicia = models.DateField()
finaliza = models.DateField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
"inicia" и "finaliza" - это поля дат, с которыми я хочу свериться сегодня
Я пробовал следующее:
today = date.today()
Promos.objects.filter(codigo = codigo_forma, inicia__gte = today,finaliza__lte=today).exists()
печатаю вот что:
today = 2022-08-25
print((Promos.objects.filter(codigo = codigo_forma).values("inicia", "finaliza")))
<QuerySet [{'inicia': datetime.date(2022, 8, 23), 'finaliza': datetime.date(2022, 11, 30)}]>
Результат полного набора запросов пуст: <QuerySet []>
Я не могу понять, какой правильный формат мне нужен для сравнения сегодняшнего дня с полями даты модели.
Вы перепутали gte
и lte
. Ваш код проверяет, что inicia
находится после сегодня, а finaliza
- до сегодня. Вы хотите поменять их местами, например, так:
today = date.today()
Promos.objects.filter(codigo=codigo_forma, inicia__lte=today, finaliza__gte=today).exists()