将两个查询集链接在一起的最佳方法是什么?我尝试过使用itertools.chain()和按位OR。
我对chain()的问题在于它与分页不匹配。因为chain()返回一个列表,所以当与Django的分页一起使用时,我得到“Exception Value:'list'对象没有属性'_clone'。
按位OR也没问题,但它似乎没有保留排序。两个查询集似乎只是组合在一起。我需要将第一个查询集的项放在第二个查询集的项之前。
答案 0 :(得分:0)
我不知道是否有解决该问题的简单方法。以下解决方案将像魅力一样工作,但这并不简单。
以下列方式定义您自己的QuerySum类:
class QuerySum(object):
def __init__(self, queries):
self.queries = queries
def _clone(self, queries):
return QuerySum(q._clone() for q in self.queries)
def __len__(self, queries):
return sum(len(q) for q in self.queries)
# you should define rest of the methods that paginator uses in similar manner
使用此实现来链接查询。