2012-05-06 2 views
5
class Item(models.Model): 
    ... 

class ItemSet(models.Model): 
    items = models.ManyToManyField(Item, related_name="itemsets") 

나는 ItemSets 목록을 가지고 있습니다. Item 객체가 적어도 하나의 ItemSet 객체에있는 "items"M2M 필드에있는 모든 Item 객체를 찾고 싶습니다.queryset 교차점에 장고 필터?

어떻게하면됩니까?

P. 여기에 내가 시도 것입니다,하지만 아무 소용이 :

itemset_list = [itemset1, itemset2, itemset3] 
itemset_list_ids = [itemset.id for itemset in itemset_list] 
itemset_queryset = ItemSet.objects.filter(id__in=itemset_list_ids) 
items = Item.objects.filter(itemsets__in=itemset_queryset) 

당신이 할 수있는 경우 : 당신이 itemsets의 목록이 필요하고 쿼리에서 그들을하지 않은 경우

itemset_list = [itemset1, itemset2, itemset3]  
items = Item.objects.filter(itemsets__in=itemset_list) 
+1

오류가 있습니까? 당신이 그것을 시도했을 때 무슨 일이 일어 났습니까? 또한, 당신은 itemsets의 목록을 어디에서 얻고 있습니까? 그들을 질의 했니? – Paragon

답변

7

이 시도 질의하여 항목 목록을 가져 오면 조금 짧아집니다 :

itemset_queryset = ItemSet.objects.filter(SOME FILTER HERE) 
items = Item.objects.filter(itemsets__in=itemset_queryset)