В описании фильтра Django какая разница между знаками __exact и equal (=)?
В описании фильтра Django какая разница, если я пишу:
.filter(name__exact='Alex')
и
.filter(name='Alex')
Спасибо
Ответ 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 '