2015-07-23 3 views
0

Предположим, у меня есть приложение под названием students, и у меня есть несколько классов (Class1, Class2,...) в моей model.py. Когда я запустил python manage.py migrate, он создаст новую таблицу (students_class1, students_class2, ...) в моей базе данных.DJango Migration Classes

И теперь, мой вопрос в том, можно ли пропустить определенный класс при переносе приложения? например, я не хочу создавать таблицу под названием students_class2

Спасибо!

ответ

2

Возможно, вы ищете managed в классе модели Meta.

Согласно документации:

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

В случае, если вы уже создали миграцию, добавить 'managed': False опционам CreateModel «s:

from django.db.migrations import Migration as DjangoMigration, CreateModel 


class Migration(DjangoMigration): 
    operations = [ 
     CreateModel(
      name='ModelName', 
      fields=[ 
       # Model's fields. 
      ], 
      options={ 
       # Other options. 
       'managed': False 
      } 
     ) 
    ] 

Кроме того, рекомендуется использовать db_table для выбора соответствующего имени таблицы.

+0

Thats it! Спасибо! Собираюсь проверить это. – aldesabido

+0

Я пробовал, но когда я пытался его перенести, он говорит, что «таблица уже существует». Да, у меня уже есть таблица в базе данных, поэтому я не хочу ее переносить, потому что мне нужно будет переименовать текущую таблицу, чтобы успешно выполнить миграцию. – aldesabido

+0

@aldesabido Ну, вам нужно отредактировать свой класс миграции, если он уже существует. Я добавлю это в свой ответ, чтобы охватить этот случай. –