如何在 django 中使用过滤器

Posted

技术标签:

【中文标题】如何在 django 中使用过滤器【英文标题】:how to use filter in django 【发布时间】:2010-10-26 23:03:00 【问题描述】:

类状态(models.Model): someid = models.IntegerField() 值 = 模型.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) 

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

谢谢。

【问题讨论】:

很抱歉发布此信息。我已经解决了这个问题。 list = Status.objects.filter(someid=20, value__lt=val2).filter(value__gt=val1) 【参考方案1】:

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

您的查询将是:

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

请参阅Making Queries 上的 Django 文档

【讨论】:

【参考方案2】:

你也可以使用the *__range lookup:

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

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

【讨论】:

以上是关于如何在 django 中使用过滤器的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中两次在查询中使用过滤器

Django-tables2 - 如何在 TemplateColumn 中使用自定义过滤器

如何在默认过滤器中使用 django 变量作为文本

Django - 如何在任何包含的模板中使用我的自定义过滤器?

当我在基于类的视图中应用过滤器时,如何在 django 中使用分页分页。网址总是不断变化我如何跟踪网址

如何在 django 中使用日期时间过滤器仅用于日期和月份?