queryset - update django model
En la declaración de filtro de Django, ¿cuál es la diferencia entre__exact y el signo igual(=)? (2)
En la declaración del filtro de Django, ¿cuál es la diferencia si escribo:
.filter(name__exact=''Alex'')
y
.filter(name=''Alex'')
Gracias
No hay diferencia, la segunda implica usar el __exact.
De la documentation :
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.
Puedes ver el SQL que Django ejecutará al convertir la propiedad de query
del conjunto de query
en una cadena:
>>> 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 ''
Así que __exact
no hace ninguna diferencia aquí.