﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
34250	Duplicate model names in M2M relationship causes RenameModel migration failure	Zac Miller	Bhuvnesh	"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'
}}}
"	Bug	closed	Migrations	4.1	Normal	fixed	RenameModel	Markus Holtermann Simon Charette	Ready for checkin	1	0	0	0	0	0
