Каково назначение __exact в Django querysets API?

Какова цель использования __exact в Django querysets API?

Например:

>>> Library.objects.filter(id = 15942)
<QuerySet [<Library: bee>]>
>>> Library.objects.filter(id__exact = 15942)
<QuerySet [<Library: bee>]>

И:

>>> Library.objects.filter(title = 'bee')
<QuerySet [<Library: bee>]>
>>> Library.objects.filter(title__exact = 'bee')
<QuerySet [<Library: bee>]>

Отмечая, что дело, очевидно, не в чувствительности к регистру:

>>> Library.objects.filter(title = 'Bee')
<QuerySet []>
>>> Library.objects.filter(title__exact = 'Bee')
<QuerySet []>

Очевидно, что __exact всегда присутствует:

В качестве удобства, когда тип поиска не указан (как в Entry.objects.get(id=14)), тип поиска принимается точным.

Источник: https://docs.djangoproject.com/en/3.2/ref/models/querysets/#field-lookups

From https://docs.djangoproject.com/en/3.2/ref/models/querysets/

точный

Точное совпадение. Если значение, предоставленное для сравнения, равно None, оно будет интерпретировано как SQL NULL (см. isnull для более подробной информации).

Entry.objects.get(id__exact=14)
Entry.objects.get(id__exact=None)

SQL эквиваленты:

SELECT ... WHERE id = 14;
SELECT ... WHERE id IS NULL;
Вернуться на верх