В Django с Django REST Framework, каков наилучший способ обновления старых объектов при добавлении нового поля? - PullRequest
0 голосов
/ 25 октября 2019

У меня есть база данных с моделью, которую я обновляю, добавляя новое поле. Когда я добавил поле, все старые объекты в базе данных заполнили это поле пустым строковым значением. Мне нужно, чтобы эти поля имели значения.

В будущем объекты должны содержать значение либо по спецификации, либо по умолчанию.

Каков наилучший способ обновить это поле длястарые объекты?

У меня есть пара идей, но я не уверен, что один «правильный». Опять же, это то, что нужно сделать только один раз, поскольку все будущие объекты будут иметь все необходимые данные.

  1. Включите PUT, добавив UpdateModelMixin к ViewSet, обновите поля, затем отключитеPUT (я не хочу, чтобы PUT постоянно разрешался)
  2. Создайте какой-нибудь сценарий миграции, чтобы обновлять меня.
  3. Что-то мне не хватает?

1 Ответ

1 голос
/ 25 октября 2019

Возможно, я неправильно понимаю вопрос, но при создании нового поля вы можете указать значение по умолчанию, которое вы хотите заполнить в существующей базе данных, чтобы вы могли присвоить ему любое значение:

https://docs.djangoproject.com/en/2.2/ref/models/fields/#default

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

ModelName.objects.update(field='newvalue')

Токак вам не нужно менять свою конфигурацию, код или что-то еще.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...