我将使用查询字段定义的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
任何帮助或暗示都会很好
由于
答案 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)