Trong tuyên bố của bộ lọc Django những gì là sự khác biệt nếu tôi viết:Trong tuyên bố bộ lọc Django sự khác biệt giữa __exact và dấu bằng (=) là gì?
.filter(name__exact='Alex')
và
.filter(name='Alex')
Cảm ơn
Trong tuyên bố của bộ lọc Django những gì là sự khác biệt nếu tôi viết:Trong tuyên bố bộ lọc Django sự khác biệt giữa __exact và dấu bằng (=) là gì?
.filter(name__exact='Alex')
và
.filter(name='Alex')
Cảm ơn
Không có sự khác biệt, điều thứ hai ngụ ý sử dụng __exact.
Từ 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.
Bạn có thể nhìn vào SQL mà Django sẽ thực hiện bằng cách chuyển đổi sở hữu query
của queryset để một chuỗi:
>>> 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 '
Vì vậy, __exact
không có sự khác biệt ở đây.