Python 在Django with Django REST框架中,添加新字段时更新旧对象的最佳方式是什么?

Python 在Django with Django REST框架中,添加新字段时更新旧对象的最佳方式是什么?,python,django,database,django-rest-framework,Python,Django,Database,Django Rest Framework,我有一个带有模型的数据库,我正在通过添加一个新字段来更新它。添加字段时,数据库中的所有旧对象都使用空字符串值填充该字段。我需要这些字段具有值 将来,对象将被强制包含一个规范值或默认值 为旧对象更新此字段的最佳方式是什么 我有一些想法,但我不确定其中一个是否“合适”。同样,这只需要做一次,因为所有未来的对象都将拥有所有必需的数据 通过将UpdateModelMixin添加到视图集中来启用PUT,更新字段,然后禁用PUT(我不希望永久允许PUT) 创建某种迁移脚本来为我进行更新 我错过了什么 我可能

我有一个带有模型的数据库,我正在通过添加一个新字段来更新它。添加字段时,数据库中的所有旧对象都使用空字符串值填充该字段。我需要这些字段具有值

将来,对象将被强制包含一个规范值或默认值

为旧对象更新此字段的最佳方式是什么

我有一些想法,但我不确定其中一个是否“合适”。同样,这只需要做一次,因为所有未来的对象都将拥有所有必需的数据

  • 通过将
    UpdateModelMixin
    添加到视图集中来启用PUT,更新字段,然后禁用PUT(我不希望永久允许PUT)
  • 创建某种迁移脚本来为我进行更新
  • 我错过了什么

  • 我可能误解了这个问题,但当您创建一个新字段时,您可以指定要填充到现有数据库中的默认值,以便可以为其指定任何值:

    如果您不能回滚并重新创建字段,我将使用Django shell来完成,因为这是一次性更改,类似于:

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

    这样,您就不需要更改配置、代码或其他任何内容。

    是正确的处理方法也许我做得不对,但当我指定默认值时,旧对象上的字段没有填充。这很奇怪。。。是的,我想我会在这个案子里用贝壳,因为它是一次性的