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

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

मेरे पास आइटमसेट की एक सूची है। मैं सभी आइटम ऑब्जेक्ट्स ढूंढना चाहता हूं जहां आइटम ऑब्जेक्ट आइटम आइटम आइटम्स में कम से कम एक आइटम "आइटम" एम 2 एम फ़ील्ड में है।Django क्वेरीसेट चौराहे पर फ़िल्टर?

मैं यह कैसे कर सकता हूं?

पीएस यहाँ मैं क्या कोशिश की है है, लेकिन कोई लाभ नहीं हुआ:

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) 

आप कर सकते हैं, तो:

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

क्या यह त्रुटि हुई? जब आपने कोशिश की तो क्या हुआ? साथ ही, आप कहां से आइटम्स की सूची प्राप्त कर रहे हैं? क्या आपने उनके लिए पूछताछ की? – Paragon

उत्तर

7

आप itemsets की अपनी सूची की जरूरत है और आप किसी क्वेरी से उन्हें नहीं मिला है, तो यह कोशिश पूछताछ करके अपनी आइटम्स सूची प्राप्त करें, इससे थोड़ा सा छोटा हो जाता है:

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