使用下面的=,我可以按年龄筛选人员:
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
qs = Person.objects.filter(age <= 20)
# ↑↑ Here
然后,我得到了下面的错误:
name 'age'没有定义
我怎么能做大于(>),大于或等于(>=),小于(<)和小于或等于(>=)与过滤器()在Django?
在字段age后面加上“大于”的__gt后缀:
Person.objects.filter(age__gt=20)
# ↑↑↑↑
# age > 20
在字段名age后面加上“大于或等于”的__gte后缀:
Person.objects.filter(age__gte=20)
# ↑↑↑↑↑
# age >= 20
在字段age后面加上“小于”的__lt后缀:
Person.objects.filter(age__lt=20)
# ↑↑↑↑
# age < 20
在字段名age后面加上“小于或等于”的__lte后缀:
Person.objects.filter(age__lte=20)
# ↑↑↑↑↑
# age <= 20
比:
Person.objects.filter(age__gt=20)
大于或等于:
Person.objects.filter(age__gte=20)
不足:
Person.objects.filter(age__lt=20)
小于或等于:
Person.objects.filter(age__lte=20)
你可以在[文档].(https://docs.djangoproject.com/en/stable/ref/models/querysets/)中找到它们。
在字段age后面加上“大于”的__gt后缀:
Person.objects.filter(age__gt=20)
# ↑↑↑↑
# age > 20
在字段名age后面加上“大于或等于”的__gte后缀:
Person.objects.filter(age__gte=20)
# ↑↑↑↑↑
# age >= 20
在字段age后面加上“小于”的__lt后缀:
Person.objects.filter(age__lt=20)
# ↑↑↑↑
# age < 20
在字段名age后面加上“小于或等于”的__lte后缀:
Person.objects.filter(age__lte=20)
# ↑↑↑↑↑
# age <= 20