En instrucción de filtro Django cuál es la diferencia si escribo:En la declaración del filtro de Django ¿cuál es la diferencia entre __exact y el signo igual (=)?
.filter(name__exact='Alex')
y
.filter(name='Alex')
Gracias
En instrucción de filtro Django cuál es la diferencia si escribo:En la declaración del filtro de Django ¿cuál es la diferencia entre __exact y el signo igual (=)?
.filter(name__exact='Alex')
y
.filter(name='Alex')
Gracias
No hay diferencia, el segundo implica el uso de __exact.
Desde el 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.
Usted puede mirar en el SQL que Django ejecutará mediante la conversión de la propiedad del queryset query
a 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 '
Entonces __exact
no hace la diferencia aquí.