Как запретить Django 1.11 создавать миграции для неуправляемых моделей? - PullRequest
0 голосов
/ 03 мая 2018

У меня есть проект Django 1.11.10 с неуправляемой моделью, такой как:

class MyModel(models.Model):

    id = models.PositiveIntegerField(primary_key=True)

    name = models.CharField(max_length=500)

    class Meta:
        managed = False

Модель оборачивает пользовательское представление SQL. Однако, когда я запускаю manage.py makemigrations, я обнаруживаю, что Django пытается сгенерировать миграцию, которая создает традиционную таблицу SQL для этой модели.

В прошлых версиях Django, , поскольку этот вопрос иллюстрирует , managed = False, используемый для предотвращения этого. Это больше не правда? Как заставить Django не игнорировать изменения схемы в модели?

1 Ответ

0 голосов
/ 03 мая 2018

Внутри файла миграции вы можете видеть опции. Больше информации можно найти здесь )

    options={
        'managed': False,
    },

это означает, что не нужно создавать таблицу, и, как говорят @soon, вы можете посмотреть на sqlmigrate и что-то вроде этого

$ ./manage.py sqlmigrate YOUR_APP_NAME MIGRATION_NUMBER

BEGIN;
--
-- Create model MyModel
--
COMMIT

Реальная таблица не создана, но django нужна миграция для контроля изменений модели.

Чтобы исключить коллизии, в то время как Django выполняет миграции, он получает описание модели не из файлов текущей модели, а постепенно восстанавливает его из файлов внутри папки migrtaions.

...