我有一个 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 来访问我的模型的详细 View 集。相反,它只接受默认格式 YYYY-MM-DDTHH:MI:SS
我想完成这个。我希望将我的详细 View 集路由到 http://example.com/mymodel/YYYYMMDDHHMISS
任何帮助或提示都会很好
谢谢
请您参考如下方法:
您可以创建一个自定义的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)
