![](/img/trans.png)
[英]how to do less than or equal to and greater than equal to in django filter?
[英]">", "<", ">=" and "<=" don't work with "filter()" in Django
使用下面的=
,我可以按age
过滤人员:
qs = Person.objects.filter(age = 20)
# ↑ Here
但是对于下面的>
、 <
、 >=
和<=
,我无法按age
过滤人员:
qs = Person.objects.filter(age > 20)
# ↑ Here
qs = Person.objects.filter(age < 20)
# ↑ Here
qs = Person.objects.filter(age >= 20)
# ↑↑ Here
qs = Person.objects.filter(age <= 20)
# ↑↑ Here
然后,我收到以下错误:
NameError:未定义名称“年龄”
我如何在 Django 中使用filter()执行greater than(>)
、 greater than or equal to(>=)
、 less than(<)
和less than or equal to(>=)
?
小于或等于:
User.objects.filter(userprofile__level__lte=0)
大于或等于:
User.objects.filter(userprofile__level__gte=0)
同样, lt
表示小于, gt
表示大于。 您可以 在文档中找到它们。
第一个答案就像一个魅力,简要解释一下
您只需将要比较的字段放在双下划线和
gte means >=
lte means >=
gt means >
lt means <
第一个答案中的“级别”应该是问题中的用户配置文件的联合字段名称,不一定是关键字
将“ G reater Than”的__gt后缀添加到字段名称age
中:
Person.objects.filter(age__gt=20)
# ↑↑↑↑
# age > 20
将“ G reater Than or E qual to”的__gte后缀添加到字段名称age
中:
Person.objects.filter(age__gte=20)
# ↑↑↑↑↑
# age >= 20
将“小于”的__lt后缀添加到字段名称age
中:
Person.objects.filter(age__lt=20)
# ↑↑↑↑
# age < 20
将“小于或等于”的__lte后缀添加到字段名称age
中:
Person.objects.filter(age__lte=20)
# ↑↑↑↑↑
# age <= 20
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.