我有两个自定义管理器方法的Django模型。每个都根据对象的不同属性返回模型对象的不同子集。如何找到两个Django查询集的交集?
class FeatureManager(models.Manager):
def without_test_cases(self):
return self.get_query_set().annotate(num_test_cases=models.Count('testcase_set')).filter(num_test_cases=0)
def standardised(self):
return self.get_query_set().annotate(standardised=Count('documentation_set__standard')).filter(standardised__gt=0)
(无论testcase_set
和documentation_set
指ManyToManyField
S于其他机型。)
有没有什么办法让一个查询集,或只是一个对象列表,这就是查询集的每一个返回的intersectiond经理方法?
什么阻止你结合每个经理的两个过滤功能? – 2010-12-10 16:48:52
你的意思是像'Model.objects.managerMethodOne()。managerMethodTwo()'?这似乎并不奏效。也许我没有正确写我的经理方法? – 2010-12-10 16:54:01
过滤器功能本身。 'Model.objects.filter(这=那个).filter(即= somethingelse)'。你为什么不这样做? – 2010-12-10 16:56:11