我正在使用Django和South运行Datamigration。我已经使用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()
有没有办法只保存类型字段中的值,而不更新修改日期?
答案 0 :(得分:0)
您可以将对象更新为仅使用可用于模型查询集的update()方法更改所需的字段(有关其他详细信息,请参阅https://docs.djangoproject.com/en/1.4/topics/db/queries/#updating-multiple-objects-at-once)。
虽然文档引用了多个对象使用此功能,但您可以通过限制到您正在使用的对象的PK来过滤更新查询以仅定位单个对象:
orm.Writer.objects.filter(pk=w.pk).update(type='client')