【问题标题】:Overriding the Update method of Django queryset覆盖 Django 查询集的 Update 方法
【发布时间】:2017-07-09 15:09:28
【问题描述】:

作为其中一项要求的一部分,我们将覆盖自定义查询集中的 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(self, kwargs)

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

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

无法从自定义查询集中调用基本查询集中的更新。

/polls/ 处的类型错误 必须是类型,而不是 PollQuerySet

非常感谢任何解决方案。

【问题讨论】:

    标签: python django python-3.x django-models django-queryset


    【解决方案1】:

    如果我正确理解了您的问题,您将无法调用超类中的更新方法。如果是这样,那是因为你说错了。方法如下:

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

    在 python 3.x 的情况下,类名和 self 成为可选参数。所以上面的行可以缩短为

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

    【讨论】:

    • 用 python3 标记的问题,super().update(*args, **kwargs)。 :)
    猜你喜欢
    • 2020-06-14
    • 2011-08-17
    • 1970-01-01
    • 2012-09-03
    • 2011-06-18
    • 1970-01-01
    • 2022-12-16
    • 2011-01-19
    • 2023-02-07
    相关资源
    最近更新 更多