[英]Django filter by many-to-many field doesn't work
有一個文章模型,它有多對多類別字段。 我想按該字段過濾它,但它沒有按我預期的那樣工作。 例如:
MyModel.objects.filter(categories__id__in = [0, 1, 2])
即使它沒有 id 為 2 的類別,它也會獲得類別為 0 和 1 的模型。我嘗試過這樣的事情:
MyModel.objects.filter(Q(categories__id = 0) & Q(categories__id = 1) & Q(categories__id = 2))
但它甚至不起作用。 如果它具有所有這些類別,它甚至不會獲得模型。
順便說一句,我不想使用超過 1 種過濾方法
那么,有沒有適合我的解決方案?
謝謝。
PS: django AND on Q 對多對多不起作用- 同樣的問題,但作者仍然沒有得到答案。
您可以計算它是否與三個Category
匹配,因此只檢索三個匹配的項目:
from django.db.models import Count
MyModel.objects.filter(
categories__id__in=[0, 1, 2]
).annotate(
category_count=Count('categories')
).filter(category_count=3)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.