类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)
哪个错了? 如何解决这个问题。
感谢。
答案 0 :(得分:10)
Django Query API不使用传统的比较运算符。它使用(field)__(operatorname)=(value)样式语法。
您的查询将是:
list = Status.objects.filter(someid=20, value__lt=val2, value__gt=val1)
上的Django文档
答案 1 :(得分:3)
您还可以使用the *__range lookup:
list = Status.objects.filter(someid=20, value__range=(val1+1, val2-1))
请注意,范围查找是“包含”的,因此您必须调整范围边界。如果适用,如上所述,这将产生与Imran发布的完全相同的列表。范围查找也适用于日期。