2013-09-23 2 views
0

Я определил некоторые модели в приложении, назовите это «блог».Django (South): сменить модель приложения

djangoproject 
    /blog 
     models.py 

теперь я хочу, чтобы изменить местоположение модели, например, поместить их здесь:

djangoproject 
    /blog 
     xxx 
    /all_models 
     models.py 

С точки кода зрения, это довольно тривиально, но я думаю, что будут проблемы на база данных, так как все созданные таблицы Django и South теперь называются blog_postsblog_comments, Django полагается на это соглашение об именах, и я не хочу потерять данные, уже имеющиеся в базе данных.

Как это сделать?

ответ

4

Проще всего не беспокоить изменение таблиц вообще, а код. Внутри класса Meta каждой из ваших моделей поставьте объявление db_table = "blog_tablename", и Django найдет их без проблем.

1

Вы можете решить это двумя способами. Первым и более простым является предоставление db_table в классе Meta каждой из ваших моделей. Другой способ миграции - применить миграцию.

Насколько я знаю, к югу не поддерживаю таблицы переименования, так что вы должны сделать это как три пути миграция: с

  • Move-де-модели, а также создавать миграции (теперь у вас есть обе таблицы старая и новая)
  • Создайте миграцию данных и выполните итерацию по предыдущей таблице, копируя объекты позже.
  • Удалите прежнюю модель и создайте для нее миграцию.

Вы можете прочитать немного больше о втором пути in south docs

Смежные вопросы