是否在Django Rest框架(DRF)中过滤代码示例优化问题
最近,我在DRF文档中提出了以下代码,用于在APIListView中过滤查询集是否在Django Rest框架(DRF)中过滤代码示例优化问题,django,optimization,django-rest-framework,filtering,django-orm,Django,Optimization,Django Rest Framework,Filtering,Django Orm,最近,我在DRF文档中提出了以下代码,用于在APIListView中过滤查询集 class PurchaseList(generics.ListAPIView): serializer_class = PurchaseSerializer def get_queryset(self): """ Optionally restricts the returned purchases to a given user, by filte
class PurchaseList(generics.ListAPIView):
serializer_class = PurchaseSerializer
def get_queryset(self):
"""
Optionally restricts the returned purchases to a given user,
by filtering against a `username` query parameter in the URL.
"""
queryset = Purchase.objects.all()
username = self.request.query_params.get('username', None)
if username is not None:
queryset = queryset.filter(purchaser__username=username)
return queryset
看起来如果上面的代码片段按如下方式编写,效率会更高
class PurchaseList(generics.ListAPIView):
serializer_class = PurchaseSerializer
def get_queryset(self):
"""
Optionally restricts the returned purchases to a given user,
by filtering against a `username` query parameter in the URL.
"""
queryset = None
username = self.request.query_params.get('username', None)
if username is not None:
queryset = queryset.filter(purchaser__username=username)
else:
queryset = Purchase.objects.all()
return queryset
我错了吗?还是我错过了关于Django ORM的东西 只要不计算查询集,就没有数据库活动 回答这个问题:不,第二个代码示例实际上并不更有效 例如: qs=Model.objects.all无数据库活动 qs=qs.filter**some_filter仍然没有活动 正在提取listqs数据 qs=qs.过滤器**其他过滤器无新活动 再次列出新活动
另请参见。只要查询集未被评估,就没有数据库活动 回答这个问题:不,第二个代码示例实际上并不更有效 例如: qs=Model.objects.all无数据库活动 qs=qs.filter**some_filter仍然没有活动 正在提取listqs数据 qs=qs.过滤器**其他过滤器无新活动 再次列出新活动 另见