Я пытаюсь сравнить DateFIeld с timezone.now (). Date (), но не дает желаемого результата:

Models.py :

class Holiday_List(models.Model):
name=models.CharField(max_length=30)
holi_day=models.DateField(default=timezone.now())
def __str__(self):
    return '{}---{}'.format(self.name, self.holi_day)

Admin.py :

def refresh():
flag=0
din=Holiday_List.objects.all()
for aaj in din:
    if aaj.holi_day==timezone.now().date():
        flag=1
        break;
if(flag==0):
    # some code to be executed

У меня есть объекты с сегодняшней датой в Holiday_List, но все же значение флага не установлено на 1, и код выполняется после вызова функции.

1
Shivam Sarda 15 Июн 2020 в 13:28

1 ответ

Лучший ответ

Вы можете отфильтровать это с помощью:

def refresh():
    flag = Holiday_List.objects.filter(
        holi_day=timezone.now().date()
    ).exists()
    if not flag:
        # …

Обратите внимание, что flag равно True в случае, если существуют Holiday_List объекты с holi_day, как сегодня, и, следовательно, False в противном случае. Таким образом, if not flag будет активирован, если сегодня не выходной.

1
Willem Van Onsem 15 Июн 2020 в 10:31