Каково назначение __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;