1

У меня возник вопрос о порядке создания таблиц при переносе. Поскольку в модели B есть ForeignKey, чтобы подключиться к модели A, я создаю модели с порядком A, B и C в models.py. Тогда:Django makemigrations не создает модели по заказу в models.py

python manage.py makemigrations app 

Существует файл миграции создается для создания всех моделей, но заказ:

- Create model B 
- Create model C 
- Create model A 
- Add field a_name to b. 

Как порядок models.py действительно имеет значение, но почему не makemigrations последующих данный порядок?

+1

Почему вопрос о заказе в ваших models.py? Это все еще актуально в файлах миграции? – knbk

+0

@knbk, поскольку я использую ForeignKey в модели B, поэтому модель A должна быть создана до B. Хотя я прочитал некоторый документ этого приложения. A можно использовать в модели B, чтобы избежать проблемы с порядком, но здесь я продолжаю создавать модель в правильном порядке в models.py – zhihong

ответ

1

Порядок, в котором вы размещаете свои модели в своих моделях.py, имеет значение, если и только если один из них ссылается на другой как ForeignKey. В такой ситуации порядок важен, и вы обнаружите, что миграция сохраняет заказ.

Что действительно важно, это не то, что появляется, когда вы делаете m anage.py makemigrations, но что происходит, когда вы делаете manage.py migrate, там django обычно вычисляет правильный порядок. Если в любое время вы чувствуете, что хотите контролировать порядок создания таблиц, вы можете редактировать файл миграции (хотя это и не нужно)

+0

да, у меня есть ForeignKey, поэтому я управляю порядком модели в models.py , Но автоматическая сгенерированная миграционная файловая доза не соответствует порядку. Так что это нормальный случай, верно? Для меня это немного запутанно. Я ожидаю увидеть только «-создание модели», но не как «-создание модели -add-поля для модели», это похоже на создание и изменение таблицы. – zhihong

+0

А я вижу, что миграция может быть изменена, но, как вы сказали, не будет этого делать, если это действительно необходимо. Большое спасибо за объяснение. – zhihong

+0

Привет, так как мне также нужно управлять порядком столбцов при создании таблицы в базе данных, но доза управления mademigrations manage.py не резервирует порядок, когда столбец является столбцом ForeignKey, поэтому я модифицировал файл миграции. Я действительно надеюсь, что файл миграции имеет модели, а столбцы следуют порядку с models.py, но кажется, что это не доза. – zhihong