2
私はIDのリストがあるとし、正確なリストをフィルタリングCさんからのIDですか?Djangoの多対多の
私はIDのリストがあるとし、正確なリストをフィルタリングCさんからのIDですか?Djangoの多対多の
あなたは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)
はこれを試してみてください:
c = [1, 2 , 3]
result = Topic.objects.filter(categories__id__in=c)