2017-02-20 19 views
3

Как часть одного из требований, мы переопределяем метод Update в пользовательском Queryset.Переопределение метода обновления набора запросов 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') 

Он не может вызывать обновление в базе Queryset из пользовательского запроса Queryset.

TypeError в/опросы/ должен быть типа, не PollQuerySet

Любое решение высоко ценится.

ответ

3

Если я правильно понял ваш вопрос, вы не можете вызвать метод обновления в суперклассе. если это так, потому что вы называете это неправильным. Вот как это делается:

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

В случае python 3.x имя класса и self становятся необязательными параметрами. Таким образом, указанную выше строку можно укоротить до

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

Вопрос с тегами python3 so, 'super(). Update (* args, ** kwargs)'. :) – danielcorreia

+0

Извините, пропустил это, спасибо за указание – e4c5