#34250: Duplicate model names in M2M relationship causes RenameModel migration
failure
-------------------------------------+-------------------------------------
Reporter: Zac | Owner: nobody
Miller |
Type: Bug | Status: new
Component: Database | Version: 4.1
layer (models, ORM) |
Severity: Normal | Keywords: RenameModel
Triage Stage: | Has patch: 0
Unreviewed |
Needs documentation: 0 | Needs tests: 0
Patch needs improvement: 0 | Easy pickings: 0
UI/UX: 0 |
-------------------------------------+-------------------------------------
Example code is here: https://github.com/jzmiller1/edemo
I have a django project with two apps, incidents and vault, that both have
a model named Incident. The vault Incident model has an M2M involving the
incidents Incident model. When the table is created for this M2M
relationship the automatic field names are "from_incident_id" and
"to_incident_id" since models have the same names.
If I then try to use a RenameModel in a migration...
{{{
operations = [
migrations.RenameModel(
old_name='Incident',
new_name='Folder',
),
]
}}}
it fails with this traceback:
{{{
Tracking file by folder pattern: migrations
Operations to perform:
Apply all migrations: admin, auth, contenttypes, incidents, sessions,
vault
Running migrations:
Applying vault.0002_rename_incident_folder...Traceback (most recent call
last):
File "/Users/zacmiller/PycharmProjects/virtualenvs/edemo/lib/python3.10
/site-packages/django/db/models/options.py", line 668, in get_field
return self.fields_map[field_name]
KeyError: 'incident'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/Users/zacmiller/Library/Application
Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/222.4345.23/PyCharm.app/Contents/plugins/python/helpers/pycharm/django_manage.py",
line 52, in <module>
run_command()
File "/Users/zacmiller/Library/Application
Support/JetBrains/Toolbox/apps/PyCharm-P/ch-0/222.4345.23/PyCharm.app/Contents/plugins/python/helpers/pycharm/django_manage.py",
line 46, in run_command
run_module(manage_file, None, '__main__', True)
File
"/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py",
line 209, in run_module
return _run_module_code(code, init_globals, run_name, mod_spec)
File
"/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py",
line 96, in _run_module_code
_run_code(code, mod_globals, init_globals,
File
"/Library/Frameworks/Python.framework/Versions/3.10/lib/python3.10/runpy.py",
line 86, in _run_code
exec(code, run_globals)
File "/Users/zacmiller/PycharmProjects/edemo/manage.py", line 22, in
<module>
main()
File "/Users/zacmiller/PycharmProjects/edemo/manage.py", line 18, in
main
execute_from_command_line(sys.argv)
File "/Users/zacmiller/PycharmProjects/virtualenvs/edemo/lib/python3.10
/site-packages/django/core/management/__init__.py", line 446, in
execute_from_command_line
utility.execute()
File "/Users/zacmiller/PycharmProjects/virtualenvs/edemo/lib/python3.10
/site-packages/django/core/management/__init__.py", line 440, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/Users/zacmiller/PycharmProjects/virtualenvs/edemo/lib/python3.10
/site-packages/django/core/management/base.py", line 402, in run_from_argv
self.execute(*args, **cmd_options)
File "/Users/zacmiller/PycharmProjects/virtualenvs/edemo/lib/python3.10
/site-packages/django/core/management/base.py", line 448, in execute
output = self.handle(*args, **options)
File "/Users/zacmiller/PycharmProjects/virtualenvs/edemo/lib/python3.10
/site-packages/django/core/management/base.py", line 96, in wrapped
res = handle_func(*args, **kwargs)
File "/Users/zacmiller/PycharmProjects/virtualenvs/edemo/lib/python3.10
/site-packages/django/core/management/commands/migrate.py", line 349, in
handle
post_migrate_state = executor.migrate(
File "/Users/zacmiller/PycharmProjects/virtualenvs/edemo/lib/python3.10
/site-packages/django/db/migrations/executor.py", line 135, in migrate
state = self._migrate_all_forwards(
File "/Users/zacmiller/PycharmProjects/virtualenvs/edemo/lib/python3.10
/site-packages/django/db/migrations/executor.py", line 167, in
_migrate_all_forwards
state = self.apply_migration(
File "/Users/zacmiller/PycharmProjects/virtualenvs/edemo/lib/python3.10
/site-packages/django/db/migrations/executor.py", line 252, in
apply_migration
state = migration.apply(state, schema_editor)
File "/Users/zacmiller/PycharmProjects/virtualenvs/edemo/lib/python3.10
/site-packages/django/db/migrations/migration.py", line 130, in apply
operation.database_forwards(
File "/Users/zacmiller/PycharmProjects/virtualenvs/edemo/lib/python3.10
/site-packages/django/db/migrations/operations/models.py", line 422, in
database_forwards
old_m2m_model._meta.get_field(old_model._meta.model_name),
File "/Users/zacmiller/PycharmProjects/virtualenvs/edemo/lib/python3.10
/site-packages/django/db/models/options.py", line 670, in get_field
raise FieldDoesNotExist(
django.core.exceptions.FieldDoesNotExist: Incident_incidents has no field
named 'incident'
}}}
--
Ticket URL: <https://code.djangoproject.com/ticket/34250>
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/010701859d591eac-ec5248d8-418d-4e70-8681-9718f71a9c2d-000000%40eu-central-1.amazonses.com.