#34956: Migration should not be allowed for a non-deterministic GeneratedField
-----------------------------------------+------------------------
Reporter: Sarah Boyce | Owner: nobody
Type: Uncategorized | Status: new
Component: Uncategorized | Version: 5.0
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-----------------------------------------+------------------------
Hello hello
I didn't fully understand the GeneratedField and thought I would be able
to do something with comparisons against Now (which I ''now'' know I
cannot do).
{{{
from django.db import models
from django.db.models import Case, When, Value, Q
from django.db.models.functions import Now
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField("date published")
closed_date = models.DateTimeField("date closed", null=True)
status = models.GeneratedField(
expression=Case(
When(pub_date__lt=Now(), then=Value("unpublished")),
When(Q(closed_date__isnull=False, closed_date__gt=Now()),
then=Value("closed")),
default=Value("active"),
),
db_persist=False,
output_field=models.TextField(),
)
}}}
Django allowed me to make migrations and migrate here (I'm using SQLite)
but then when I tried to create a Question object it got very angry.
The traceback is very long but the main thing is:
{{{
OperationalError: non-deterministic use of strftime() in a generated
column
}}}
I learnt my lesson and won't do it again! But I'm wondering if we can
bring this error earlier and prevent the user from being able to
makemigrations/migrate? I can provide more details if needed
--
Ticket URL: <https://code.djangoproject.com/ticket/34956>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
--
You received this message because you are subscribed to the Google Groups
"Django updates" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/0107018bae51d907-f86d314d-d134-4c7d-b0eb-6f14e8bf1e1e-000000%40eu-central-1.amazonses.com.