Django - менеджер вызовов с несколькими наследуемыми классами

Итак, у меня есть класс, который помогает мне переопределить метод update кверисета:

class QuerySetUpdateOverriden(QuerySet, object):
    def update(self, *args, **kwargs):
        super().update(*args, **kwargs)
        if hasattr(self, 'method_from_object'):
            self.method_from_object()
            return

и вот мой класс, где я использую это:

class MyObject:
    objects = QuerySetUpdateOverriden.as_manager()
    def method_from_object(self):
        print("called")

до оператора печати так и не дошло.

И я понял почему - поле objects тоже не наследует MyObject.

Итак, вопрос - как я могу сделать так, чтобы он наследовал MyObject, чтобы вызывался method_from_object?

Спасибо.

Вы проверяете, есть ли у self метод с именем 'method_from_object', но у вашего QuerySetUpdateOverriden нет такого вызова метода. И MyObject не наследуется от QuerySetUpdateOverriden.

Этот код будет работать, я думаю:

class MyObjectManager(QuerySetUpdateOverriden.as_manager()):

    def method_from_object(self):
        print("called")


class MyObject(models.Model):
    objects = QuerySetUpdateOverriden.as_manager()


Вернуться на верх