[英]Django - call Manager with multiple inherited classes
So I have this class that helps me override the update method of a queryset:所以我有这个 class 可以帮助我覆盖查询集的更新方法:
class QuerySetUpdateOverriden(QuerySet, object):
def update(self, *args, **kwargs):
super().update(*args, **kwargs)
if hasattr(self, 'method_from_object'):
self.method_from_object()
return
and here's my class where I use it:这是我使用它的 class :
class MyObject:
objects = QuerySetUpdateOverriden.as_manager()
def method_from_object(self):
print("called")
the print statement is never reached.打印语句永远不会到达。
And I get why - the objects field doesn't inherit MyObject too.我明白了 - 对象字段也没有继承 MyObject 。
So, the question is - how can I make it inherit MyObject so method_from_object will be called?所以,问题是 - 我怎样才能让它继承 MyObject 所以 method_from_object 将被调用?
Thanks.谢谢。
You test if self has a method called 'method_from_object', but your QuerySetUpdateOverriden has no method call like this.您测试self是否有一个名为“method_from_object”的方法,但您的QuerySetUpdateOverriden没有这样的方法调用。 And MyObject does not inherit from QuerySetUpdateOverriden .并且MyObject不继承自QuerySetUpdateOverriden 。
This code would be work i think:我认为这段代码可以工作:
class MyObjectManager(QuerySetUpdateOverriden.as_manager()):
def method_from_object(self):
print("called")
class MyObject(models.Model):
objects = QuerySetUpdateOverriden.as_manager()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.