我根据请求query_params过滤了我的视图查询集,但我不喜欢我是怎么做的,有什么方法可以做到这个最pythonic吗?
def get_queryset(self):
qs = Publication.objects
if self.request.query_params.get('user'):
user = self.request.query_params.get('user')
if user.isdigit():
qs = qs.filter(owner__pk=user)
limit = self.request.query_params.get('limit')
if limit and limit.isdigit():
return qs.all()[:int(limit)]
return qs.all()
答案 0 :(得分:1)
.get
需要第二个default
参数,因此您无需检查参数是否存在。如果请求数据不包含user
,则它将为''
。所以,这可能会更好:
def get_queryset(self):
qs = Publication.objects
user = self.request.query_params.get('user', '')
limit = self.request.query_params.get('limit', '')
if user.isdigit():
qs = qs.filter(owner__pk=user)
if limit.isdigit():
return qs.all()[:int(limit)]
return qs.all()
答案 1 :(得分:0)
def get_queryset(self):
qs = Publication.objects.all()
user = self.request.query_params.get('user', None)
limit = self.request.query_params.get('limit', None)
if user:
qs = qs.filter(owner__pk=user)
if limit:
return qs[:int(limit)]
return qs