重写Django查询集的Update方法

tvz2xvvm  于 2023-05-01  发布在  Go
关注(0)|答案(1)|浏览(150)

作为需求的一部分,我们将覆盖自定义Queryset中的Update方法。
示例代码如下。

from django.db.models.query import QuerySet

class PollQuerySet(QuerySet):
    def update(self, *args, **kwargs):
        # Some Business Logic

        # Call super to continue the flow -- from below line we are unable to invoke super
        super().update(*args, **kwargs)

class Question(models.Model):
    objects = PollQuerySet.as_manager()

    question_text = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')

无法从自定义查询集中调用基查询集中的更新。
/polls/的TypeError必须是type,而不是PollQuerySet
任何解决方案都非常感谢。

pjngdqdw

pjngdqdw1#

如果我对你的问题理解正确的话,你不能在超类中调用update方法。如果是这样,那是因为你说错了。具体操作如下:

super(PollQuerySet,self).update(*args, **kwargs)

在Python 3的情况下x类名和self成为可选参数。所以上面的线可以缩短到

super().update(*args, **kwargs)

相关问题