2015-10-28 3 views
8

В моем приложении django (django 1.8) Я использую две базы данных: один «default», который является MySQL, а другой - это база данных, доступная только для чтения. Я две модели, которые получают доступ к этой базе данных, и я хотел бы, чтобы исключить эти две модели постоянно из данных и схемы миграции:django: исключить модели из миграций

  • makemigrations никогда не должны обнаружить каких-либо изменений, а также создать миграции для них
  • migrate никогда не должен жаловаться на отсутствие миграции для этого приложения

до сих пор, я пробовал разные вещи, и все это без какого-либо успеха:

  • использовал managed=False Meta опцию на обеих моделях
  • добавил allow_migrate метод на мой маршрутизатор, который возвращает False для обеих моделей

Кто-нибудь есть пример того, как этот сценарий может быть достигнуто? Спасибо за помощь!

+10

Обычно 'удалось = false' путь. В чем проблема? – Ivan

+0

включите часть кода, которую вы сделали, также потому, что, поскольку @Ivan предлагает это способ –

+0

Я считаю, что это сообщение отвечает на ваш вопрос: http://stackoverflow.com/questions/33820715/how-to-disable-migration-from-one -model-of-an-app-in-django –

ответ

1

До сих пор, я пробовал разные вещи, и все это без какого-либо успеха:

  • используется управляемый = False Meta вариант на обеих моделях

Этот вариант (managed = False атрибут метафайлов модели), похоже, соответствует требованиям.

Если нет, вам нужно будет расширить вопрос, чтобы точно сказать, что особенного в вашей модели, что managed = False не выполняет эту работу.

0

Я думал, что у меня проблема с makemigrations. Он делает вид, что делает миграцию на модели managed = False, но для этой модели не генерируется SQL-код.

Вот мой пример, модель Smdocumets неуправляемая, и код SQL не был сгенерирован.

Python manage.py makemigrations

Migrations for 'monitor': 
    monitor\migrations\0005_auto_20171102_1125.py 
    - Create model Smdocuments 
    - Add field sid to db 
    - Alter field name on db 

Python manage.py sqlmigrate монитор 0005

BEGIN; 
-- 
-- Create model Smdocuments 
-- 
-- 
-- Add field sid to db 
-- 
ALTER TABLE "monitor_db" RENAME TO "monitor_db__old"; 
... 
Смежные вопросы