Django: Переименование моделей, таблица M2M не переименовывается

TLDR: Модели перенесены в новое приложение. После переноса отношение M2M ссылается на несуществующую таблицу. Предыдущая таблица M2M не была переименована.

Django Version: 3.2.3

Сценарий: Я занимаюсь рефакторингом приложения Django. В этом процессе я перенес некоторые модели в новое приложение. Для этого я переименовал таблицы, как описано Хаки Бенитой , используя SeparateDatabaseAndState.

Одна из моделей Students в новом приложении имеет поле с отношением Many2Many к другой модели Teachers (которую я также перенес в новое приложение).

oldapp/migrations/000X_auto_XXX.py

operations = [
...
 migrations.SeparateDatabaseAndState(
            state_operations=[
                migrations.DeleteModel(
                    name='Students',
                )
            ],
            database_operations=[
                migrations.AlterModelTable(
                    name='Students',
                    table='newapp_students'
                )
            ]
        ),
 migrations.SeparateDatabaseAndState(
            state_operations=[
                migrations.DeleteModel(
                    name='Teachers',
                )
            ],
            database_operations=[
                migrations.AlterModelTable(
                    name='Teachers',
                    table='newapp_Teachers'
                )
            ]
        ),
...
]

newapp/migrations/0001_initial.py

operations = [
...
        migrations.SeparateDatabaseAndState(
            state_operations=[
                migrations.CreateModel(
                    name='Teacher',
                    fields=[...],
                    options={...},
                )
            ],
            database_operations=[]
        ),
        migrations.SeparateDatabaseAndState(
            state_operations=[
                migrations.CreateModel(
                    name='Students',
                    fields=[
                       ...
                       ('teachers', models.ManyToManyField(blank=True,related_name='students', to='newapp.Teachers')),
                       ...
                    ],
                    options={...},
                )
            ],
            database_operations=[]
        ),

       ...
]

После выполнения python manage.py migrate все модели были переименованы (пока все хорошо)...

Проблема: Автоматически созданная таблица для Many2Many не была переименована (oldapp_students_teachers). Однако модель в новом приложении ссылается на несуществующую таблицу в новом приложении (newapp_students_teachers).

Я провел небольшое исследование и, похоже, что эта проблема была решена и исправлена несколько лет назад 41b337efa085b6b9cfdb2cf724d977005ff77e75.

Однако для меня проблема все еще остается. Так что же я делаю не так?

Вернуться на верх