1

类状态(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) 

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

谢谢。

4

2 回答 2

10

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

您的查询将是:

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

请参阅有关进行查询的 Django 文档

于 2009-05-18T06:17:54.457 回答
3

您还可以使用*__range 查找

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

请注意,范围查找是“包容性的”,因此您必须调整范围边界。如果像上面一样适用,这应该会产生与 Imran 发布的完全相同的列表。范围查找也适用于日期。

于 2009-05-18T09:28:23.327 回答