2012-05-05 3 views
1

Моя модель задачи:Как заменить CharField на ForeignKey, используя юг в django?

class Tasks(models.Model): 
    state = models.CharField(max_length = 150) 

Я хочу, чтобы изменить состояние поля в ForeignKey как state = models.ForeignKey(States)

Если государства модель будет:

class States(model.Model): 
    name = models.CharField(max_length = 150) 

BTW Я использую Django non-rel с django mongodb.

Легко ли использовать с помощью юга? Или это любой другой способ сделать это?

+0

Я не знаю о mongodb, но с mysql/postgres это просто вопрос запуска схем и переноса команд, чтобы изменить это. Это очень прямолинейно –

ответ

1

я буду делать это в шесть этапов (миграций):

  • первого шага data_migration (южная команда): Я создаю объекты государства.
  • Второй этап а schema_migration (южная команда): Я добавить Ф.К. в задачах имя будет state_bk
  • Третий шаг data_migration: Перенесите все задачи и назначаются государства к задачам
  • квартал schema_migration: Удалить государства CharField и создают состояния Fk
  • Пятой data_migration: Перенос значений из state_bk заявить
  • шестого schema_migration: Удалить state_bk поля

Это очень просто, но немного утомительно

+0

Эй, я думаю, что юг не поддерживает MongoDB. Когда я пытаюсь запустите python manage.py syncdb после установки на юг, выдается сообщение об ошибке «Для вашей базы данных нет южного модуля базы данных« south.db.None ». Пожалуйста, выберите поддерживаемую базу данных, проверьте настройки SOUTH_DATABASE_ADAPTER [S] или удалите юг из установленных приложений. "???? – Anshul

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