如何使用 Django 的相关查找?



我注意到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文档中看到更多的例子。

相关内容

  • 没有找到相关文章

最新更新