Кажется, что это должно быть "легким" или, по крайней мере, документированным где-то, я просто не могу его найти.
Допустим, у меня есть модель:
class A(models.Model):
users = models.ManyToMany('auth.User', blank=True)
Теперь я хочу перейти на таблицу through
, чтобы добавить поля в отношение 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
. Какая лучшая практика на данный момент? Есть ли достойный способ перехода на новую таблицу through
? Использовать ли db_table
в мета? Я просто не использую through=...
сразу... затем выполните schemamigration --auto
, затем datamigration
, чтобы скопировать текущую таблицу (как-то, не уверен...), а затем добавить отношение through
и позволить он убивает таблицу?
Какой трюк здесь? Это действительно так сложно?