2015-10-13 101 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_inti_end_int之间。在示例表中,这将是ID为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

SQL当量:SELECT * FROM appname_dataset WHERE i_begin_int <= 170 AND i_end_int >= 170

+0

啊,那么容易。不过,我一开始尝试过。但是我已经使用__gte作为开始部分,这没有奏效,我没有注意到。多谢你们!!! – Daniel