关于save(update_fields)方法细微差别的问题,Django

时间:2019-05-13 15:20:51

标签: django django-queryset django-orm

快速提问。无法在文档中找到它,或者存在矛盾的信息。

执行方法:

save(update_fields = somefields)

以与方法相同的原理工作:

SomeModel.objects.update(somefields here)

这两种方法都可以在数据库级别工作而不触发模型中的SAVE方法吗?

很明显,更新是在数据库级别上进行的

保存(update_fields = somefields)怎么样?

谢谢您,我很抱歉地提出了一个非常抽象的问题


    def delete(self, using=None, keep_parents=False):
        self.show = False
        self.change_date = datetime.datetime.now()
        self.save(update_fields=["show", "change_date"]) # will it trigger save() method in the model or not???

1 个答案:

答案 0 :(得分:1)

虽然使用 save(update_fields=[.....]) 在数据库级别强制更新查询,它比 update() 方法慢,因为在此之前对 super.save() 进行了额外调用。

super.save(*args, **kwargs)

不要将 save 与 update_fields 一起使用,而是尝试使用类似的方法。

YourModel.objects.filter(pk=self.pk).update(show=False, change_date=datetime.datetime.now())

相关问题