繁体   English   中英

“>”、“<”、“>=”和“<=”不适用于 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.

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