django多态基因中的QuerySet遗传
我想将django多态基因中的QuerySet遗传,django,Django,我想将filter\u by_user方法添加到为子多态模型定义的所有QuerySet类中,并在为基础模型调用时使用它们来过滤每个模型的对象按用户筛选方法对于不同的子模型可能不同。这可能吗 我尝试了以下代码,但没有成功 class MyBaseQuerySet(PolymorphicQuerySet): def filter_by_user(self, user): return self.all() class MyBaseModel(PolymorphicMode
filter\u by_user
方法添加到为子多态模型定义的所有QuerySet类中,并在为基础模型调用时使用它们来过滤每个模型的对象<代码>按用户筛选方法对于不同的子模型可能不同。这可能吗
我尝试了以下代码,但没有成功
class MyBaseQuerySet(PolymorphicQuerySet):
def filter_by_user(self, user):
return self.all()
class MyBaseModel(PolymorphicModel):
...
objects = PolymorphicManager(MyBaseQuerySet)
class MyChild1QuerySet(MyBaseQuerySet):
def filter_by_user(self, user):
return self.filter(fieldA__lt=user.profile.propA)
class MyChild1Model(MyBaseModel):
fieldA = models.IntegerField()
...
objects = PolymorphicManager(MyChild1QuerySet)
class MyChild2QuerySet(MyBaseQuerySet):
def filter_by_user(self, user):
return self.filter(fieldB__gt=user.profile.propB)
class MyChild2Model(MyBaseModel):
fieldB = models.IntegerField()
...
objects = PolymorphicManager(MyChild2QuerySet)
当我调用
MyBaseModel.objects.filter\u by\u user(john)
magic不会发生,只有base queryset filter\u by\u user被调用。多态性管理器是否实例化传递给它的queryset
或者它的确切用途是什么?@LawrenceBenson我猜它使多态性过滤工作起来了。我是从文档中获取的:我不太确定我是否理解您的期望MyBaseModel
参考MyBaseQuerySet
。当您调用MyBaseModel.objects.filter\u by\u user(john)
时,您将得到return self.all()
。您没有指定如何处理该名称input@LawrenceBenson我在MyChild1QuerySet&MyChild2QuerySet中指定如何处理它,并期望调用相应的方法。但是,您希望Django如何知道调用哪一个方法呢?我希望它能像任何正常的多态性一样工作。如果调用MyChild2QuerySet
您应该得到返回self.filter(fieldB\uu gt=user.profile.propB)
。如果不是由该类实现的,那么您将始终获得从或更高级别调用它的类的函数