2016-11-09 32 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)