title: Is timzone.now() cached when used in a checkconstraint?
body: <p>I have a timezone aware model field with a CheckConstraint:</p>
  <pre><code>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' ]
  </code></pre>
  <p>In my form I process the data to add my_date manually:</p>
  <pre><code>def form_valid(self, form):
  
      obj = form.save(commit=False)
      obj.my_date = timezone.now()
      obj.save()
  </code></pre>
  <p>When I save this model I get <code>new row for relation &quot;mymodel_mydate&quot; violates check constraint 'myconstraint'.</code></p>
  <p>I know the reason it's failing is that the datetime for <code>my_date</code> is greater than <code>timezone.now()</code> in the checkconstraint, but why is this? Is <code>timezone.now()</code> in the checkconstraint somehow cached earlier?</p>
  <p>I can see the value for my_date in the debug failing row (which is correct, in UTC+00 and matches my system time as I expect), however I don't know how to compare this to the timezone value in the CheckConstraint?</p>