Как сравнивать даты в 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
Вернуться на верх