0

我一直在尝试使用以下方法更新 Django 对象:

object_name.update(name="alfred")

问题是,当我以这种方式获取对象名称时:

object_name = myobject.objects.get(id=object_id)

方法更新不起作用。

但是当我以这种方式获取对象时:

object_name = myobject.objects.filter(id=object_id)

它会起作用的

为什么会这样?是因为最后一个对象是查询集吗?无论如何使用 .update 与 django 对象?

谢谢你!

4

1 回答 1

2

正如评论已经说明的那样,您不能.update()在模型实例本身上使用 - 除非您自己在模型上创建了该函数。

.update()正在使用querysets(请参阅文档)。

如果要保存模型实例的更改,请使用save(),例如:

obj = MyModel.objects.get(...)
obj.some_field = 'some-other-value'
obj.save()

另请参阅有关如何保存对对象的更改的文档。

关于如何实施的示例MyModel.update()

class MyModel(...):
    ...  # fields etc.

    def update(self, **kwargs):
        for k, v in kwargs.items():
           setattr(self, k, v)
        self.save()
于 2020-04-20T11:31:12.167 回答