2017-02-20 36 views
3

作爲其中一個要求的一部分,我們重寫了自定義Queryset中的Update方法。覆蓋Django查詢集的更新方法

示例代碼如下。

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') 

無法從Custom Queryset中調用基本Queryset中的更新。

類型錯誤在/輪詢/ 必須是類型,而不是PollQuerySet

任何解決方案是非常讚賞。

回答

3

如果我已正確理解您的問題,則無法在超類中調用更新方法。如果是這樣,那是因爲你說錯了。這裏是:

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

在python 3.x的情況下,類名和自變成可選參數。因此,上面的行可以縮短爲

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

問題標籤爲python3所以,'超()。更新(* args,** kwargs)'。 :) – danielcorreia

+0

對不起,忽略了,謝謝指出 – e4c5