#29897: Initial migration fails when referencing a custom user model from a
sequence of at least two concrete ancestor models
-------------------------------------+-------------------------------------
Reporter: stevenganz | Owner: nobody
Type: Bug | Status: new
Component: Migrations | Version: 2.1
Severity: Normal | Resolution:
Keywords: "custom user model" | Triage Stage: Accepted
"abstract model" "foreign key" |
Has patch: 0 | Needs documentation: 0
Needs tests: 0 | Patch needs improvement: 0
Easy pickings: 0 | UI/UX: 0
-------------------------------------+-------------------------------------
Changes (by Simon Charette):
* severity: Release blocker => Normal
* stage: Unreviewed => Accepted
Comment:
From my local testing this has been broken since at least Django 1.11 but
the `makemigrations`'s behavior changed in the current master as the
optimizer got more aggressive and assumes operation to be appropriately
ordered which is not the case here.
Migrations generated on Django 1.11, 2.0, and 2.1
{{{
Migrations for 'core':
core/migrations/0001_initial.py
- Create model A
- Create model B
- Add field createdByUser to a
- Create model User
}}}
Migration generated on the current master
{{{
Migrations for 'core':
core/migrations/0001_initial.py
- Create model A
- Create model B
- Create model User
}}}
An interesting thing here is that everything works fine on the current
master if `AUTH_USER_MODEL` is not set to `core.User`. Given the optimizer
is completely ''swappable model'' agnostic the issue most probably lies in
the auto-detector ''swappable model'' dependency resolution.
To make it clear the expected operation's order here is the same as if the
model wasn't swappable
{{{
Migrations for 'core':
core/migrations/0001_initial.py
- Create model A
- Create model B
- Create model User
- Add field createdByUser to a
}}}
Downgrading to non-release blocker as this is not a regression and can be
easily worked around by either generating the migration without
`AUTH_USER_MODEL` pointed at `core.User` (and then adjusting it) or by
manually altering the migration to move the `AddField(ForeignKey(User))`
operation after the `CreateModel(User)` one.
--
Ticket URL: <https://code.djangoproject.com/ticket/29897#comment:2>
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 post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/django-updates/068.5a20b91040d441fe5a846a49c9d98c02%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.