【问题标题】:how to do less than or equal to and greater than equal to in django filter?如何在django过滤器中做小于等于和大于等于?
【发布时间】:2016-04-17 02:05:47
【问题描述】:

django过滤器中小于等于和大于等于怎么办?就像,我想在 django 视图中获得价值:-10<=val<=50
为此,我在 sql 中使用了一些查询,如下所示:-

select count(*) from table_name where gender='MALE' and age<=50 and age>=10;

我在 django 视图中尝试过这样的事情:-

tablename.objects.filter(Q(gender='MALE'),Q(age__lte=50) & Q(age__gte=10)).count()

但我得到了不同的价值观。在 sql 中我得到 65,在 django 中我得到 29。 sql 答案是正确的。请帮我在 django 视图中进行比较。

【问题讨论】:

    标签: python django postgresql


    【解决方案1】:

    为什么不用_range函数?

    filter(gender='MALE', age__range=(10, 50))

    请看这里: https://docs.djangoproject.com/en/1.7/ref/models/querysets/#range

    编辑新链接: https://docs.djangoproject.com/en/3.0/ref/models/querysets/#range

    【讨论】:

      【解决方案2】:

      如果你真的想使用&gt;=&lt;= 你可以写:

      Modelname.objects.filter(gender='MALE', age__gte = 10, age__lte = 50).count()
      

      【讨论】:

      • 我试过你的答案,它的作品很好,谢谢.. @doru
      • @Irfan wani 不,它也适用于小数、浮点数和日期。
      • 感谢回复。我想通了。 BTW __range 也是对范围进行过滤的更好方法。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-02
      • 2012-09-11
      • 2011-01-25
      • 2019-09-13
      • 2012-04-19
      • 2016-05-06
      • 1970-01-01
      相关资源
      最近更新 更多