我注意到Django的关系字段注册了7次查找:
fk.get_lookups()
'in' : <class 'django.db.models.fields.related_lookups.RelatedIn'>,
'exact' : <class 'django.db.models.fields.related_lookups.RelatedExact'>,
'lt' : <class 'django.db.models.fields.related_lookups.RelatedLessThan'>,
'gt' : <class 'django.db.models.fields.related_lookups.RelatedGreaterThan'>,
'gte' : <class 'django.db.models.fields.related_lookups.RelatedGreaterThanOrEqual'>,
'lte' : <class 'django.db.models.fields.related_lookups.RelatedLessThanOrEqual'>,
'isnull' : <class 'django.db.models.fields.related_lookups.RelatedIsNull'>}
defined in https://github.com/django/django/blob/stable/3.2.x/django/db/models/fields/related_lookups.py
registered in https://github.com/django/django/blob/stable/3.2.x/django/db/models/fields/related.py
我熟悉如何使用__exact
(又名=
),__in
和__isnull
与关系,但在文档中没有提到将lt/lte/gt/gte应用于关系意味着什么。它们是固定的比较吗?
__lt
:小于(获取小于特定值的记录)等于<
__gt
:大于(获取大于特定值的记录)相当于>
__lte
:小于等于(获取小于或等于特定值的记录)等于=<
__gte
:大于等于(获取大于或等于特定值的记录)等于=>
示例:
.filter(score__lt=100)
:分数小于100的对象。
SQL等价:WHERE score < 3;
.filter(id__lte=3)
: id小于等于3的对象
SQL等价:WHERE id <= 3;
- 您还可以将这些查找与
F
函数结合使用:
.filter(rating__lt=F('number_of_comments')
你可以在Django文档中看到更多的例子。