Как сравнивать даты в django
Я работаю над проектом менеджера задач, пользователь может определить "дату окончания" задачи, я хотел бы изменить внешний код задачи, которая не была завершена до "endind_date". Я пытался играть вокруг в models.py, но я получаю эту ошибку: "can't compare datetime.datetime to datetime.date"
models.py:
class Task(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True)
title = models.CharField(max_length=200)
description = models.TextField(max_length=200, null=True, blank=True)
complete = models.BooleanField(default=False)
importance = models.ForeignKey(Importance, null=True, blank=False, on_delete=models.CASCADE)
creation_date = models.DateField(default=timezone.now)
ending_date = models.DateField(null=True, blank=False)
def __str__(self):
return self.title
def is_end_date(self):
if datetime.now() > self.ending_date:
if not self.complete:
return True
else:
pass
else:
pass
html(only included related code to the problem):
{% if task.is_end_date %}
#code
{% else %}
#code
Вы должны преобразовать объект datetime в date, вызвав на нем .date():
from django.utils.timezone import now
class Task(models.Model):
# …
def is_end_date(self):
return now().date() > self.ending_date and not self.complete
Примечание: Обычно лучше использовать
settings.AUTH_USER_MODEL[Django-doc] для ссылки на модель пользователя, чем использоватьUserмодель [Django-doc] напрямую. Для получения дополнительной информации вы можете посмотреть ссылка наUserмодель раздел документации .
Вы можете использовать date.today() или datetime.now().date() в качестве
Использование date.today() как
from datetime import date
def is_end_date(self):
if date.today() > self.ending_date:
if not self.complete:
return True
else:
pass
else:
pass
Или datetime.now().date()
from datetime import datetime
def is_end_date(self):
if datetime.now().date() > self.ending_date:
if not self.complete:
return True
else:
pass
else:
pass