2015-10-13 6 views
6

मैं Django फ़िल्टरिंग समस्या से जूझ रहा हूं, मैं अब तक हल नहीं कर सका। मेरे पास से/से पूर्णांक वाले डेटाबेस हैं, और मुझे एक Django फ़िल्टर की आवश्यकता है जो किसी भी ऑब्जेक्ट को लौटाता है जहां दिया गया पूर्णांक उस सीमा के भीतर होता है।Django: दो मानों के बीच पूर्णांक द्वारा फ़िल्टर ऑब्जेक्ट्स

class Dataset(models.Model): 
    i_begin_int = models.BigIntegerField() 
    i_end_int = models.BigIntegerField() 

उदाहरण के लिए, मैं निम्नलिखित डेटा है:: तो अब

+----+-------------+-----------+ 
| id | i_begin_int | i_end_int | 
+----+-------------+-----------+ 
| 1 |   100 |  200 | 
+----+-------------+-----------+ 
| 2 |   150 |  300 | 
+----+-------------+-----------+ 
| 3 |  7000 |  7500 | 
+----+-------------+-----------+ 

मैं एक पूर्णांक है, का कहना है की सुविधा देता है, 170. मैं

मैं निम्नलिखित मॉडल (सरलीकृत) है सभी वस्तुओं की आवश्यकता है जहां 170 i_begin_int और i_end_int के बीच है। उदाहरण तालिका में, यह आईडी 1 और 2 के साथ ऑब्जेक्ट्स होगा।

क्या कोई Django फ़िल्टर है जिसका मैं उपयोग कर सकता हूं?

उत्तर

8

इसे आजमाएं;

x = 170 
Dataset.objects.filter(i_end_int__gte=x,i_begin_int__lte=x) 

कहां; gte बराबर या अधिक करने के लिए LTE = को

+1

आप कर रहे हैं यकीन है कि यह काम कर रहा है? – Pynchia

+0

आसपास की शर्तों को बदलने से कोई फर्क नहीं पड़ता। यह अभी भी – Pynchia

+0

काम नहीं करता है, क्यों आप इस मुद्दे को इंगित कर सकते हैं। –

2
Dataset.objects.filter(i_begin_int__lte=170, i_end_int__gte=170) 

फ़िल्टर से कम बराबर = जहां i_begin_int 170 से कम है और i_end_int मूल्य से अधिक 170.

एसक्यूएल बराबर है: SELECT * FROM appname_dataset WHERE i_begin_int <= 170 AND i_end_int >= 170

+0

आह, इतना आसान है। मैंने पहले यह कोशिश की, हालांकि। लेकिन मैंने शुरुआती हिस्से के लिए __gte का उपयोग किया है, जो काम नहीं करता और मैंने नोटिस नहीं किया। धन्यवाद दोस्तों!!! – Daniel

संबंधित मुद्दे