0

我正在使用 Django 和 South 运行数据迁移。我已经使用 Schemamigration 向我的模型添加了一个新字段,现在我正在为该模型的所有对象填充该字段。

问题是,当我在数据迁移中对我的对象调用 save() 方法时,它会自动更新每个对象上的修改字段,并且所有对象都以相同的修改日期结束。如果可能,我希望能够保留数据迁移之前的修改日期。

目前我的数据迁移如下所示:

class Migration(DataMigration):

    def forwards(self, orm):
        for w in orm.Writer.objects.all():
            w.type = 'outside'
            if w.managed_by != None:
                if w.managed_by.writer != None:
                    if w.id == w.managed_by.writer.id:
                        w.type = 'client'
            w.save()

有没有办法只保存类型字段中的值,而不更新修改日期?

4

1 回答 1

0

您可以使用可用于模型查询集的 update() 方法更新对象以仅更改所需的字段(请参阅https://docs.djangoproject.com/en/1.4/topics/db/queries/#updating-一次多个对象以获取更多详细信息)。

尽管文档引用了针对多个对象使用此功能,但您可以通过限制您正在使用的对象的 PK 来过滤更新查询以仅针对单个对象:

orm.Writer.objects.filter(pk=w.pk).update(type='client')
于 2013-04-09T02:26:43.427 回答