Кэшируется ли timzone.now() при использовании в ограничении проверки?

У меня есть поле модели с учетом часового пояса с ограничением CheckConstraint:

class MyModel(models.Model):
    my_text = models.CharField()
    my_date = models.DateTimeField()

    class Meta:
        constraints = [ models.CheckConstraint(
                        check=Q(my_date__lte=django.utils.timezone.now()),
                        name='mycontraint' ]

В моей форме я обрабатываю данные, чтобы добавить my_date вручную:

def form_valid(self, form):

    obj = form.save(commit=False)
    obj.my_date = timezone.now()
    obj.save()

При сохранении этой модели я получаю new row for relation "mymodel_mydate" violates check constraint 'myconstraint'.

Я знаю, что причина неудачи в том, что время даты для my_date больше, чем timezone.now() в ограничении проверки, но почему это так? Может, timezone.now() в ограничении проверки каким-то образом кэшируется раньше?

Я могу видеть значение для my_date в отладочной неудачной строке (которое является правильным, в UTC+00 и соответствует моему системному времени, как я ожидаю), однако я не знаю, как сравнить его со значением часового пояса в CheckConstraint?

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