Note that both making the migration and applying it work if the ForeignKey
to the swappable user model is added in the very first initial migration,
but not if it is added later.
I've tested this on both the 1.7 RC1 version, and the latest github
checkout of branch "stable/1.7.x".
Steps to reproduce:
1. Create a swappable user model, add it to settings.py, create and run
migrations.
2. Create a new model in a new app. Do not give it a reference to the user
model.
3. Add a ForeignKey from the new model to the custom user model.
4. Run makemigrations. This works.
5. Run migrate. This fails.
Workaround:
1. Add `migrations.swappable_dependency(settings.AUTH_USER_MODEL),` to the
list of dependencies of the failing migration by hand.
Initial investigation:
Swappable user ForeignKeys are referenced as `('owner',
models.ForeignKey(to=settings.AUTH_USER_MODEL)),` in the migration
scripts.
It seems that if the ForeignKey is added in the initial migration of a new
app, then dependencies are correctly added:
{{{
dependencies = [
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
]
}}}
But if the ForeignKey is added in a later migration, then the initial
migration's dependencies are empty, and the second migration's only
dependency is:
{{{
dependencies = [
('foo', '0001_initial'),
]
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/23100>
Django <https://code.djangoproject.com/>
The Web framework for perfectionists with deadlines.
* needs_better_patch: => 0
* needs_tests: => 0
* needs_docs: => 0
Comment:
Sorry, I missed a step in the reproduction instructions. They are:
1. Create a swappable user model, add it to settings.py, create and run
migrations.
2. Create a new model in a new app. Do not give it a reference to the user
model.
3. Run makemigrations and migrate. Both work.
4. Add a ForeignKey from the new model to the custom user model.
5. Run makemigrations. This works.
6. Run migrate. This fails.
--
Ticket URL: <https://code.djangoproject.com/ticket/23100#comment:1>
* version: 1.7-rc-1 => 1.7-rc-2
Comment:
Also tested on 1.7 RC2.
--
Ticket URL: <https://code.djangoproject.com/ticket/23100#comment:2>
Comment (by andrewgodwin):
I suspect this is a duplicate of #22944.
--
Ticket URL: <https://code.djangoproject.com/ticket/23100#comment:3>
* status: new => assigned
* owner: nobody => andrewgodwin
* severity: Normal => Release blocker
Comment:
Closed #22944 in favour of this, promoting this to release blocker.
--
Ticket URL: <https://code.djangoproject.com/ticket/23100#comment:4>
* status: assigned => closed
* resolution: => fixed
Comment:
In [changeset:"cb60d22bd94738174440f8d60a04c3d9c38636c9"]:
{{{
#!CommitTicketReference repository=""
revision="cb60d22bd94738174440f8d60a04c3d9c38636c9"
Fixed #23100: Individual FK creation missing dependencies
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/23100#comment:5>
Comment (by Andrew Godwin <andrew@…>):
In [changeset:"d84b881600788e9a9d3c2ad7d3fe4a03d1880086"]:
{{{
#!CommitTicketReference repository=""
revision="d84b881600788e9a9d3c2ad7d3fe4a03d1880086"
[1.7.x] Fixed #23100: Individual FK creation missing dependencies
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/23100#comment:6>