2016-11-09 23 views

回答

3

你需要调用.filter(categories=category_id)c列表中的每个元素。

c = [1, 2, 3] 
topics = reduce(lambda qs, pk: qs.filter(categories=pk), c, Topic.objects.all()) 

,然后如果你想排除其他类别的主题(例如用[1,2,3,4]的话题),那么你需要的总数.annotate.filter

c = [1, 2, 3] 
initial_qs = Topic.objects.annotate(cnt=models.Count('categories')).filter(cnt=len(c)) 
topics = reduce(lambda qs, pk: qs.filter(categories=pk), c, initial_qs) 
0

试试这个:

c = [1, 2 , 3] 
result = Topic.objects.filter(categories__id__in=c)