简体   繁体   English

如何在django过滤器中做小于或等于和大于等于?

[英]how to do less than or equal to and greater than equal to in django filter?

How to do less than or equal to and greater than equal to in django filter?如何在django过滤器中做小于或等于和大于等于? Like , I want to get value around :- 10<=val<=50 in django view.就像,我想在 django 视图中获得价值:- 10<=val<=50
For this I used some query in sql like this :-为此,我在 sql 中使用了一些查询,如下所示:-

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

I tried something like this in django view :-我在 Django 视图中尝试过这样的事情:-

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

But I got different values.但我得到了不同的价值观。 In sql I got 65 and in django I got 29. sql answer is correct.在 sql 中我得到了 65,在 django 中我得到了 29。sql 答案是正确的。 Please help me to do comparison in django view.请帮我在 Django 视图中进行比较。

Why don't you use the _range function?为什么不使用 _range 函数?

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

See here: https://docs.djangoproject.com/en/1.7/ref/models/querysets/#range请参阅此处: https : //docs.djangoproject.com/en/1.7/ref/models/querysets/#range

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

如果你真的想使用>=<=你可以写:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM