Подтвердить что ты не робот

В описании фильтра Django какая разница между знаками __exact и equal (=)?

В описании фильтра Django какая разница, если я пишу:

.filter(name__exact='Alex')

и

.filter(name='Alex')

Спасибо

4b9b3361

Ответ 1

Нет никакой разницы, вторая подразумевает использование __exact.

В документации :

For example, the following two statements are equivalent:
>>> Blog.objects.get(id__exact=14)  # Explicit form
>>> Blog.objects.get(id=14)         
# __exact is implied This is for convenience, because exact 
# lookups are the common case.

Ответ 2

Вы можете посмотреть на SQL, который выполнит Django, преобразов свойство queryset query в строку:

>>> from django.contrib.auth.models import User
>>> str(User.objects.filter(username = 'name').query)
'SELECT ... WHERE `auth_user`.`username` = name '
>>> str(User.objects.filter(username__exact = 'name').query)
'SELECT ... WHERE `auth_user`.`username` = name '

Итак, __exact здесь не имеет значения.