Почему Юг решает удалить эту таблицу m2m? - PullRequest
2 голосов
/ 13 февраля 2011

Я хочу добавить столбец к существующей модели, и после запуска "schemamigration --auto" результирующая миграция пытается удалить другую таблицу!Зачем это нужно?

мои модели (упрощенно) -

class A(Model):
    a = CharField()
    b = BooleanField(default=False)   #  <--- this is the new column

class B(Model):                # <---- this is the table South wants to delete
    c = CharField()
    d = ManyToManyField(A, through='C')

результат миграции -

def forwards(self, orm):
    # Removing M2M table for field d on 'B'
    db.delete_table('B_d')  # <-------  Why is that?
    # Adding field 'b'
    db.add_column('A', 'b', self.gf('django.db.models.fields.BooleanField')(default=False, blank=True), keep_default=False)

Ответы [ 2 ]

1 голос
/ 13 февраля 2011

Вы также добавили сквозную модель одновременно / с момента создания m2m B_d?Трудно быть уверенным, не видя больше кода, но похоже, что Юг отказывается от таблицы автоматического объединения, потому что теперь есть определенная сквозная модель, которая будет использоваться для объединения.Я также предполагаю, что модель C существует: o)

1 голос
/ 13 февраля 2011

Ключевое слово through="C" говорит о том, что модель C будет использоваться в качестве реляционной таблицы.

Ссылка на документацию: ДОПОЛНИТЕЛЬНЫЕ ПОЛЯ В ОТНОШЕНИИ МНОГООБРАЗОВАНИЯ

Другой вопрос SO, касающийся ключевого слова through: добавление одного и того же объекта дважды в ManyToManyField

...