2010-10-24 27 views
1
def by_this(self): 
     return super(MyModelManager, self).get_query_set().filter(this=True) 

def by_that(self): 
     return super(MyModelManager, self).get_query_set().filter(that=True) 

如果我做MyModel.objects.by_this()或by_that()它的作品。多模型管理器过滤器方法

但我想要做的:MyModel.objects.by_this()by_that()

回答

0

MyModel.objects将返回您的ModelManager类型,但by_this返回的查询集。所以你不能在返回的对象上调用by_that,链接不起作用。你可以这样做:MyModel.objects.by_this().filter(that=True)。或者在ModelManager派生类中定义一个by_this_and_that方法。

0

正如ars所说,你的方法返回一个查询集。因此,您需要做的是创建一个QuerySet的自定义子类,其中包含by_thisby_that方法,然后在MyModelManager.get_query_set返回您的子类查询集。