假设我有一个id列表:c = [' 1',' 2' ,' 3']
{{1}}
如何从c?
过滤具有id' s精确且仅具有类别的主题?答案 0 :(得分:6)
您需要为.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)
答案 1 :(得分:0)
试试这个:
c = [1, 2 , 3]
result = Topic.objects.filter(categories__id__in=c)