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