Установить значение столбца NULL при изменении поля на ForeignKey - PullRequest
0 голосов
/ 31 марта 2020

У меня было CharField в моей модели, которое я позже решил изменить на ForeignKey. Поэтому, когда я пытаюсь мигрировать, это не будет go, потому что у меня уже есть значения char, назначенные моим полям. Я знаю, что могу удалить это поле в моей модели и создать новое, и изменить его везде в своем коде, или я могу вручную удалить все значения в базе данных. Но есть ли третий вариант, когда значение в поле не связано с соответствующим идентификатором в родительской модели, оно устанавливается равным нулю.

Ответы [ 2 ]

0 голосов
/ 31 марта 2020

Я думаю, что вы ищете Миграция данных . Я бы справился с этим с двумя миграциями. Во-первых, добавьте новое поле ForeignKey и настройте миграцию данных для обработки их заполнения из существующего CharField. Во второй миграции удалите существующее CharField.

0 голосов
/ 31 марта 2020

Вот что я бы сделал:

  1. Создайте новое поле models.ForeignKey в вашей модели.
  2. Заполните этот столбец с помощью переноса данных или оболочки python .
  3. Установите ForeignKey как null=False
  4. Переходите все ваши запросы от использования старого CharField к новому ForeignKey.
  5. Удалите старый CharField.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...