2
假設我有ID的名單:C = [「1」,「2」,「3」]Django的多對多篩選確切名單
class Topic(Model):
categories=ManyToManyField(Category)
我如何可以篩選具有確切的主題,只有類別與ID從C?
假設我有ID的名單:C = [「1」,「2」,「3」]Django的多對多篩選確切名單
class Topic(Model):
categories=ManyToManyField(Category)
我如何可以篩選具有確切的主題,只有類別與ID從C?
你需要調用.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)
試試這個:
c = [1, 2 , 3]
result = Topic.objects.filter(categories__id__in=c)