在Django过滤器语句中,如果我写的话有什么区别:
.filter(name__exact='Alex')
和
.filter(name='Alex')
由于
答案 0 :(得分:25)
没有区别,第二个意味着使用__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.
答案 1 :(得分:15)
您可以通过将查询集的query
属性转换为字符串来查看Django将执行的SQL:
>>> 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
在这里没有任何区别。