Только недавно пришлось сделать это самому. Это на самом деле довольно легко.
Сначала добавьте новую сквозную модель в ваш код, но не задайте его как параметр through
для вашего ManyToManyField
. Создайте автоматическую схему миграции, которая создаст новую таблицу для вас.
$ python manage.py schemamigration --auto yourapp
Во-вторых, создайте миграцию данных:
$ python manage.py datamigration yourapp name_of_migration
В вашей прямой миграции:
for b in orm.B.objects.all():
for a in b.as.all():
orm.C.objects.create(a=a, b=b)
В вашей обратной миграции:
for c in orm.C.objects.all():
c.b.as.add(a)
Наконец, добавьте параметр through
к вашему ManyToManyField
и сгенерируйте еще одну автоматическую схему миграции:
$ python manage.py schemamigration --auto yourapp