Джанго мигрирует после inspectdb - проблема с существующими полями внешнего ключа - PullRequest
0 голосов
/ 21 октября 2019

Для базы данных mysql (схема ранее поддерживалась из sqlalchemy orm) я сгенерировал модели django с помощью команды управления inspectdb.

Модели работают нормально, например, с отношениями, используемыми из представлений администратора. Это означает, что я могу выбрать связанные модели для полей формы внешнего ключа.

Первоначальная миграция, выполненная с помощью makemigrations, выглядит нормально, но поля внешнего ключа отсутствуют.

Модели в этой точкевсе еще есть мета класс установки managed=False. После изменения managed на True миграция хочет создать поля внешнего ключа. Даже если db_column задан явно (и, конечно, эти поля существуют).

Это может выглядеть примерно так.

    class SomeThing(models.Model):
       name = models.CharField(max_length=128, blank=True, null=True)
       mandant = models.ForeignKey(
           'Owner', models.CASCADE, db_column='owner_id'
       )

При применении миграции происходит ошибка, поскольку полеуже существует.

Как лучше всего справиться с этой ситуацией? Почему django не получает поля внешнего ключа на первом шаге inspectdb? Есть ли способ подсказать системе миграции, что поле уже закрыто?

...