返回Get中的id列表.Django Rest框架



我有一个名为"文档细节样本"的模型,当你用GET调用它时,类似于这样的东西,GEThttps://url/document-detail-sample/,然后你会得到每个"文档细节示例"。

模型内部是id。因此,如果你想要每个id,你可以在列表上"迭代"并要求id。很简单。

但是。。。前端开发人员不想这么做:D他们说这太工作量了。。。

所以,我必须返回id列表。:D

我在想类似于GEThttps://url/document-detail-sample/id-list的事情

但我不知道如何只返回一个列表。我读过这篇文章,知道如何在后台获取id_list。但我不知道我应该实现什么来返回该url中的列表。。。

我的观点很简单:

class DocumentDetailSampleViewSet(viewsets.ModelViewSet):
queryset = DocumentDetailSample.objects.all()
serializer_class = DocumentDetailSampleSerializer

url是这样的:

router.register(r'document-detail-sample', DocumentDetailSampleViewSet)

所以:

1-使用.../document-detail-sample/id-list"这样的url是个好主意吗?

2-如果是,我该怎么做?

3-如果没有,我该怎么办?

您可以使用@list_route装饰器

from rest_framework.decorators import detail_route, list_route
from rest_framework.response import Response
class DocumentDetailSampleViewSet(viewsets.ModelViewSet):
queryset = DocumentDetailSample.objects.all()
serializer_class = DocumentDetailSampleSerializer
@list_route()
def id_list(self, request):
q = self.get_queryset().values('id')
return Response(list(q))

这个装饰器允许您提供与方法同名的附加端点。/document-detail-sample/id_list/
关于视图集中额外操作的文档参考

假设您不需要分页,只需像一样重写list方法

class DocumentDetailSampleViewSet(viewsets.ModelViewSet):
queryset = DocumentDetailSample.objects.all()
serializer_class = DocumentDetailSampleSerializer

def list(self, request):
return Response(self.get_queryset().values_list("id", flat=True))

相关内容

  • 没有找到相关文章

最新更新