Добавление нового поля ForeignKey в существующую модель django MongoDB?

Я использую "Django Non-rel" и Django-MongoDB ORM"для своего проекта с базой данных MongoDB Nosql. Мне нужно изменить одну из моих моделей и добавить в нее поле ForeignKey. Я думал, что South поможет в миграции данных, но я узнал, что Юг не поддерживает MongoDB. Моя модель выглядит так:

class Projects(models.Model):
    projectName =models.CharField(max_length = 100,unique=True,db_index=True)
    projectManager = models.ForeignKey('auth.User')

Мне нужно добавить states = models.ForeignKey('States') к моей модели. Но я понятия не имею, как это сделать без юга, чтобы это не создавало проблемы в моей существующей базе данных. Пожалуйста, помогите, ребята:(

1 ответ

Решение

Я использую django non-rel на appengine, это может не совсем перевести на MongoDB, но я подозреваю, что это то же самое.

Я делал следующее, это занимает несколько шагов.

  1. Обновлена ​​ваша модель с null=True: projectManager = models.ForeignKey('auth.User', null=True)

Это гарантирует, что ваши существующие модели в базе данных не будут вызывать Django для создания исключений.

  1. Напишите скрипт, который будет запрашивать все проекты и обновлять их поля projectManager.

  2. Снова обновите модель с помощью null=False projectManager = models.ForeignKey('auth.User')

Теперь, когда ни один из объектов в БД не имеет нулевого поля для projectManager, можно удалить нулевой флаг.

Другие вопросы по тегам