首页 > 解决方案 > 如何在更新时调用 django save 方法

问题描述

我想update()通过本质上强制它save在django中的每个对象上调用一个方法来“禁用”一个方法。我该怎么做?目前我有:

  class HandleQuerySet(QuerySet):
      def update(self, *args, **kwargs):
          for x in self:
              x.save()

但这似乎没有将 args 传递给 save 方法——就像它没有保存任何东西一样。我将如何正确地做到这一点?

标签: pythondjango

解决方案


是否要更新传入的字段?您需要x使用作为kwargs. 一种方法是借助以下方法setattr

class HandleQuerySet(QuerySet):
    def update(self, *args, **kwargs):
        for x in self:
            for k, v in kwargs.items():
                setattr(x, k, v)
            x.save()

推荐阅读