【发布时间】:2020-08-02 14:45:52
【问题描述】:
最近我在 DRF 文档中提出了以下代码,用于过滤 APIListView 中的查询集,
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
看来上面的sn-p代码写成这样会更有效率,
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 的东西?
【问题讨论】:
标签: django optimization django-rest-framework filtering django-orm