Django Rest Framework:具有日期时间查找字段的详细模型视图集的自定义URL模式

时间:2016-06-01 15:37:17

标签: python django django-rest-framework

我将使用查询字段定义的ModelViewSet定义为timestamp(日期时间字段),而不是默认的pk字段

这是我的代码:

class MySerializer(serializers.ModelSerializer):
    class Meta:
        model = ACFCrowdData

class MyViewSet(viewsets.ModelViewSet):
    queryset = MyModel.objects.all()
    serializer_class = MySerializer
    lookup_field = 'timestamp'

timestamp字段的类型为models.DatetimeField

现在,我想通过在URL中将日期时间查找模式指定为YYYYMMDDHHMISS来访问模型的详细视图集。相反,它只接受默认格式YYYY-MM-DDTHH:MI:SS

我想完成这个。我希望我的详细视图集路由到http://example.com/mymodel/YYYYMMDDHHMISS

任何帮助或暗示都会很好

由于

1 个答案:

答案 0 :(得分:2)

您可以创建自定义retrieve方法并使用自己的时间戳解析器。像这样的东西可能会成功。我没有尝试过这个特定的代码,但原则应该有效。

from datetime import datetime

class MyViewSet(viewsets.ModelViewSet):

    ...

    def retrieve(self, request, timestamp=None):
        queryset = self.get_queryset()
        try:
             parsedtime = datetime.strptime(timestamp, '%Y%m%d%H%M%S')
        except ValueError:
             # incorrect timestamp  
             ...
        record = get_object_or_404(queryset, timestamp=parsedtime)
        serializer = self.get_serializer(record)
        return Response(serializer.data)