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