有没有更好的方法来做到这一点
us = User.objects.filter(id=someid)
if us.exists():
u = us[0]
正如我在sql日志中看到的那样,us.exists()将执行一个sql查询,然后u = us [0]将执行另一个查询。所以我们必须做2个查询才能完成任务。我只是想要一个更好的方法来做到这一点
答案 0 :(得分:6)
假设id
是唯一的,你应该请求宽恕,而不是许可:
try:
u = User.objects.get(id=someid)
except User.DoesNotExist:
# do whatever you should do if user does not exist
答案 1 :(得分:2)
.get()
未使用django queryset缓存。因此,如果您真的想要使用并重用查询集,那么更好的方法是捕获IndexError
,如:
us = User.objects.filter(id=someid)
try:
u = us[0]
except IndexError:
#item does not exist.