Похоже, это должно быть «легко» или, по крайней мере, где-то задокументировано, я просто не могу ее найти.
Допустим, у меня есть модель:
class A(models.Model):
users = models.ManyToMany('auth.User', blank=True)
Теперь я хочу перейти на таблицу с по
, чтобы добавить поля в отношение ManyToMany ...
class AUsers(models.Model):
user = models.ForeignKey('auth.User')
a = models.ForeignKey('A')
new_field = models.BooleanField()
class A(models.Model):
users = models.ManyToMany('auth.User', blank=True, through='AUsers')
Затем я делаю:
% ./manage.py schemamigration app --auto
Не совсем удивительно, он сообщает мне, что собирается отбросить исходную автоматически созданную сквозную таблицу и создать новую для AUsers
. Какая лучшая практика на данный момент? Есть ли достойный способ перейти на новую таблицу с через
? Могу ли я использовать db_table
в Meta? Я просто не использую через = ...
сразу... затем выполните schemamigration --auto
, затем datamigration
, чтобы скопировать текущую таблицу (каким-то образом, не уверен ...), а затем добавьте отношение через
и пусть он убьет стол?
Какой здесь трюк? Неужели это так сложно?