Django CheckConstraints для проверки start_date больше или равно today

from django.db.models.functions import Now, TruncDay

class Foo(models.Model):
  start_date = models.DateTimeField()
  end_date = models.DateTimeField()

  class Meta:
    constraints = [
      name="start_date must be greater than or equal today",
      check=CheckConstraints(start_date__gte=TruncDay(Now()))
    ]

в коде выше, я хочу добавить CheckConstraint, чтобы проверить, является ли дата начала_даты больше или равна сегодня.
но, после makemigration и migrate, произошла ошибка.

functions or expression 'CURRENT_TIME' cannot be userd in check clause

Как проверить дату начала_даты с сегодняшним днем?

Я думаю, что ошибка вернулась из-за CheckConstraint.
Ваш импорт: from django.db import models, поэтому вы должны использовать models.CheckConstraint()

from django.db import models
from django.db.models.functions import Now
from django.db.models import Q    

class Foo(models.Model):
    start_date = models.DateTimeField()
    end_date = models.DateTimeField()

    class Meta:
        constraints = [
            models.CheckConstraint(
                check=Q(start_date__gte=Now()),
                name = "start_date must be greater than or equal today"
            )
    ]

Это объясняется в документации, смотрите constraint reference для получения дополнительной информации

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