【发布时间】:2018-01-18 11:46:25
【问题描述】:
我想接收带有查询参数(如果存在)的获取查询和过滤数据集。我目前正在使用下面列出的愚蠢方法。在这种情况下,我不喜欢它没有检查日期是否实际上可以被解析的事实。在另一种方法中,我可能只想接收可以解析为 int 的数字字符串。有没有一些很酷的 pythonic 方法可以在不编写一堆样板代码的情况下做到这一点?
class TrackList(APIView):
@token_required
def get(self, request, pk, **kwargs):
# read query params
date_from = self.request.query_params.get('date_from')
date_to = self.request.query_params.get('date_to')
# if present then filter
if date_from and date_to:
points = Track.objects.filter(user_id=pk, date__range=[date_from, date_to])
# otherwise don't filter
else:
points = Track.objects.filter(user_id=pk)
points.order_by('date')
serializer = TrackListSerializer(points, many=True)
return Response(serializer.data, status=status.HTTP_200_OK)
UPD:这个问题实际上不是关于 dateutil.parser,而是关于一般查询参数解析器。也许我应该使用 Django rest 序列化器?
【问题讨论】:
-
你需要自己做。
-
也许你觉得 django-filter 有用:django-filter.readthedocs.io/en/1.1.0