Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django QuerySet最佳实践_Python_Django_Django Models - Fatal编程技术网

Python Django QuerySet最佳实践

Python Django QuerySet最佳实践,python,django,django-models,Python,Django,Django Models,有没有更好的办法 us = User.objects.filter(id=someid) if us.exists(): u = us[0] 正如我在sql日志中看到的,us.exists将执行一个sql查询,然后u=us[0]将执行另一个查询。所以我们必须做两个查询来完成这件事。我只是想问一个更好的方法来做到这一点假设id是唯一的,你可能应该请求原谅,而不是许可: us = User.objects.filter(id=someid) if us.exists(): u = us

有没有更好的办法

us = User.objects.filter(id=someid)
if us.exists():
   u = us[0]
正如我在sql日志中看到的,us.exists将执行一个sql查询,然后u=us[0]将执行另一个查询。所以我们必须做两个查询来完成这件事。我只是想问一个更好的方法来做到这一点

假设id是唯一的,你可能应该请求原谅,而不是许可:

us = User.objects.filter(id=someid)
if us.exists():
   u = us[0]
try:
    u = User.objects.get(id=someid)
except User.DoesNotExist:
    # do whatever you should do if user does not exist
假设id是唯一的,您可能应该请求原谅,而不是许可:

try:
    u = User.objects.get(id=someid)
except User.DoesNotExist:
    # do whatever you should do if user does not exist
.get不使用django queryset缓存。因此,如果您真的想使用和重用queryset,更好的方法是捕获索引器,如:

.get不使用django queryset缓存。因此,如果您真的想使用和重用queryset,更好的方法是捕获索引器,如:


非常感谢,你救了我的命day@TrinhHoangNhu很高兴知道!非常感谢,你救了我的命day@TrinhHoangNhu很高兴知道!