我正在使用Django 2.0
。
我有一个类似的模型
class MyModel(models.Model):
update_new = models.CharField(blank=True, max_length=200)
modified = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
并使用Model Manager
class MyModelManager(models.Manager):
def get_queryset(self):
return MyModelQueryset(self.model, self._db)
def update_or_create(self, pk, **save_data):
record = MyModel.objects.filter(
pk=pk
)
if record.exists():
# setting field manually for testing
save_data['update_new'] = 'anuj'
uc = record.update(**save_data)
print(uc) # prints 1
return record.first(), True
record, created = self.get_queryset().get_or_create(
pk=pk
**save_data
)
return record, created
这很好,并且值已更新。但是已修改字段未更新。 已创建和已修改字段中的值保持不变(创建记录时的时间戳记)
答案 0 :(得分:2)
docs中描述的这种行为:
该字段仅在调用Model.save()时自动更新。的 以其他方式对其他字段进行更新时,该字段未更新 例如QuerySet.update(),尽管您可以为 像这样的更新中的字段。