我在用着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
这工作正常并且值已更新。但modified字段未更新。价值在created and modified字段保持相同(创建记录时的时间戳)
这种行为在docs https://docs.djangoproject.com/en/2.1/ref/models/fields/#django.db.models.DateField.auto_now:
该字段仅在调用 Model.save() 时自动更新。这
以其他方式更新其他字段时,该字段不会更新
例如 QuerySet.update(),尽管您可以指定自定义值
像这样的更新中的字段。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)