如何在 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-tables2 - 如何在 TemplateColumn 中使用自定义过滤器
Django - 如何在任何包含的模板中使用我的自定义过滤器?