Django प्रश्न: आईडी को बाहर करने के लिए वस्तुओं को कैसे फ़िल्टर किया जाए जो एक सूची में है?


89

मैं किसी क्वेरी में कैसे फ़िल्टर कर सकता हूं ताकि परिणाम किसी सूची से संबंधित किसी भी ऑब्जेक्ट इंस्टेंस को बाहर कर दे?

आइए हम कहते हैं:

object_id_list = [1, 5, 345]

MyObject.objects.filter(Q(time__gte=datetime.now()) & Q( ... what to put here? ... ))

की शैली में कुछ "SELECT * FROM ... WHERE id NOT IN (...)"

जवाबों:


176
MyObject.objects.filter(time__gte=datetime.now()).exclude(id__in=object_id_list)

1
का नाम क्या है MyObject.objects? मैं इस वर्ग के बारे में कहां पढ़ सकता हूं?
सर्ज

@Serge MyObject सिर्फ आपके Django मॉडल वर्ग से संबंधित होगा जो भी हो सकता है। उदाहरण के लिए, यदि आपके पास UserProfile मॉडल सेटअप है, तो आपके पास UserProfile.objects हो सकते हैं।
कोडगुए

धन्यवाद, लेकिन सही के बारे में पूछ im .objects। यह क्या है?
सर्ज

18

आप Qऑब्जेक्ट का उपयोग करके भी ऐसा कर सकते हैं :

from django.db.models import Q

MyObject.objects.filter(time__gte=datetime.now()).filter(~Q(id__in=object_id_list))
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.