#22833: 1.7 migrations can't delete codependent "through" models
----------------------------+------------------------
Reporter: mozumder@… | Owner: nobody
Type: Bug | Status: new
Component: Migrations | Version: 1.7-beta-2
Severity: Normal | Keywords:
Triage Stage: Unreviewed | Has patch: 0
Easy pickings: 0 | UI/UX: 0
----------------------------+------------------------
Hi,
I'm using Django 1.7b4, and I'm testing the migrations. I have this
existing model in the database:
{{{
class BlocksList(Named, Ordered):
blocks_list_assignments = models.ManyToManyField(
Block,
through='BlocksListAssignment'
)
family = models.ForeignKey(
BlockFamily,
verbose_name=_("Family Name"),
null=True,
blank=True,
)
def __str__(self): # Python 3: def __str__(self):
return self.name
class BlocksListAssignment(Ordered):
block = models.ForeignKey(Block)
block_list = models.ForeignKey(BlocksList)
def __str__(self): # Python 3: def __str__(self):
return self.block_list.name + ": %s" % self.block
}}}
I'm trying to delete this with the makemigrations/migrate command, with
this in my migrations file:
{{{
migrations.DeleteModel(
name='BlocksList',
),
migrations.DeleteModel(
name='BlocksListAssignment',
),
}}}
It looks like the co-dependencies prevent the migrations from deleting
both models, because I constantly get:
{{{
Running migrations:
Applying blocks.0014_auto_20140613_2227...Traceback (most recent call
last):
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/site-packages/django/apps/config.py", line 152, in get_model
return self.models[model_name.lower()]
KeyError: 'blockslistassignment'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/site-packages/django/db/migrations/state.py", line 76, in render
model = self.apps.get_model(lookup_model[0], lookup_model[1])
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/site-packages/django/apps/registry.py", line 190, in get_model
return self.get_app_config(app_label).get_model(model_name.lower())
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/site-packages/django/apps/config.py", line 155, in get_model
"App '%s' doesn't have a '%s' model." % (self.label, model_name))
LookupError: App 'blocks' doesn't have a 'blockslistassignment' model.
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "./manage.py", line 10, in <module>
execute_from_command_line(sys.argv)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/site-packages/django/core/management/__init__.py", line 427, in
execute_from_command_line
utility.execute()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/site-packages/django/core/management/__init__.py", line 419, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/site-packages/django/core/management/base.py", line 288, in run_from_argv
self.execute(*args, **options.__dict__)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/site-packages/django/core/management/base.py", line 337, in execute
output = self.handle(*args, **options)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/site-packages/django/core/management/commands/migrate.py", line 146, in
handle
executor.migrate(targets, plan, fake=options.get("fake", False))
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/site-packages/django/db/migrations/executor.py", line 62, in migrate
self.apply_migration(migration, fake=fake)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/site-packages/django/db/migrations/executor.py", line 90, in
apply_migration
if self.detect_soft_applied(migration):
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/site-packages/django/db/migrations/executor.py", line 134, in
detect_soft_applied
apps = project_state.render()
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4
/site-packages/django/db/migrations/state.py", line 86, in render
model=lookup_model,
ValueError: Lookup failed for model referenced by field
blocks.BlocksList.blocks_list_assignments: blocks.BlocksListAssignment
}}}
Anyways to get around this I have to recreate the database and start from
fixtures.
Do let me know if there is another way where I can use the migrations
directly.
This is on Mac OS X 10.9, Python 3.4.0, Django 1.7b4, and PostGRES 9.3.4
database.
--
Ticket URL: <https://code.djangoproject.com/ticket/22833>
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/066.13ae5f0e44007d8b120e804a99e85e76%40djangoproject.com.
For more options, visit https://groups.google.com/d/optout.