2016-11-09 34 views

答えて

3

あなたはcリストの各要素に対して.filter(categories=category_id)を呼び出す必要があります。

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)