如何在django中使用过滤器

时间:2009-05-18 06:05:18

标签: django django-models django-queryset django-orm

类Status(models.Model):     someid = models.IntegerField()     value = models.IntegerField()     status_msg = models.CharField(max_length = 2000)

so my database look like:
 20     1234567890   'some mdg'
 20     4597434534   'some msg2'
 20     3453945934   'sdfgsdf'
 10     4503485344   'ddfgg'

所以我必须获取包含某些值之间的someid的值。 所以说吧

  val1 = '1234567890'
    val2  = '4414544544'

所以我的最终结果应该是包含id = 20的2个条目的列表 如何实现这一点。

我尝试使用

list = Status.objects.filter(someid = 20, value < val2, value > val1) 

哪个错了? 如何解决这个问题。

感谢。

2 个答案:

答案 0 :(得分:10)

Django Query API不使用传统的比较运算符。它使用(field)__(operatorname)=(value)样式语法。

您的查询将是:

list = Status.objects.filter(someid=20, value__lt=val2, value__gt=val1)

请参阅Making Queries

上的Django文档

答案 1 :(得分:3)

您还可以使用the *__range lookup

list = Status.objects.filter(someid=20, value__range=(val1+1, val2-1))

请注意,范围查找是“包含”的,因此您必须调整范围边界。如果适用,如上所述,这将产生与Imran发布的完全相同的列表。范围查找也适用于日期。