Nella dichiarazione filtro Django qual è la differenza se scrivo:Nella dichiarazione del filtro Django qual è la differenza tra __exact e segno di uguale (=)?
.filter(name__exact='Alex')
e
.filter(name='Alex')
Grazie
Nella dichiarazione filtro Django qual è la differenza se scrivo:Nella dichiarazione del filtro Django qual è la differenza tra __exact e segno di uguale (=)?
.filter(name__exact='Alex')
e
.filter(name='Alex')
Grazie
Non c'è alcuna differenza, la seconda implica l'utilizzo di __exact.
Dal 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.
Potete guardare l'SQL che Django eseguirà convertendo proprietà del set di query query
a una stringa:
>>> 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 '
Quindi __exact
non fa alcuna differenza qui.