Opened 3 years ago

Closed 3 years ago

Last modified 3 years ago

#21275 closed Bug (fixed)

Cannot use migrations if model field specifies validators

Reported by: Tim Graham Owned by: Tim Graham <timograham@…>
Component: Migrations Version: master
Severity: Normal Keywords:
Cc: loic@… Triage Stage: Unreviewed
Has patch: yes Needs documentation: no
Needs tests: no Patch needs improvement: no
Easy pickings: no UI/UX: no

Description

My assumption is that we shouldn't try to serialize the validators attribute.

Traceback:

  File "/home/tim/.virtualenvs/foo/local/lib/python2.7/site-packages/django/db/migrations/writer.py", line 185, in serialize
    raise ValueError("Cannot serialize: %r" % value)
ValueError: Cannot serialize: <django.core.validators.RegexValidator object at 0x1bacc10>

Change History (8)

comment:1 Changed 3 years ago by Tim Graham

After discussion with loic84 in #django-developers, it appears that validators should be serializable and that this error is due to the regex used by the username field of contrib.auth.models.AbstractUser not being serializable. Loic says validators may be useful for data migrations, hence a possible reason not to exclude them entirely.

comment:2 Changed 3 years ago by loic84

Cc: loic@… added
Has patch: set
Needs tests: set

comment:3 Changed 3 years ago by loic84

Another POC around the concept of a deconstructible decorator.

https://github.com/loic/django/tree/ticket21275_take2.

comment:4 Changed 3 years ago by loic84

Needs tests: unset

PR https://github.com/django/django/pull/1783.

Note that this will be needed if/when #21295 is merged.

comment:5 Changed 3 years ago by Tim Graham <timograham@…>

Owner: set to Tim Graham <timograham@…>
Resolution: fixed
Status: newclosed

In e565e1332ddfbb44fe7e6139375e3c243af7398d:

Fixed #21275 -- Fixed a serializer error when generating migrations for contrib.auth.

The migration serializer now looks for a deconstruct method on any object.

comment:6 Changed 3 years ago by Erik Romijn

Shouldn't this also be added to the release notes? If anyone has their own model with a custom RegexValidator where they currently pass a compiled regex, they'll need to pass a string now, or they will also hit this issue, right?

comment:7 Changed 3 years ago by Daniel Hahler

Please note that there is #22255, which is about adding a new flags kwarg.

comment:8 Changed 3 years ago by Erik Romijn

Note: See TracTickets for help on using tickets.
Back to Top