【发布时间】:2016-05-21 05:26:53
【问题描述】:
情况是这样的。我的 Django REST API 上有一个列表:/playerslist/
它返回给我一个像这样的玩家列表:
这正是我目前想要的。但现在,我需要这个:
前往/playerslist/1/ 为我提供了 1 号球员的不同信息。此列表仅用于列出球员的基本信息。但是我需要玩家的详细视图,包含来自其他模型的信息并且具有不同的序列化,这一定是一个基本问题,但是由于我对 Django 和 Python 完全陌生,所以我一定会误解一些东西。
这是我的视图集:
class PlayersListViewSet(viewsets.ModelViewSet):
queryset = Player.objects.all()
serializer_class = PlayersListSerializer
http_method_names = ['get', 'post']
pagination_class = None
filter_backends = [filters.OrderingFilter]
ordering_fields = ['name']
def get_queryset(self):
queryset = Player.objects.all()
team_id = self.request.query_params.get('team', None)
if team_id:
try:
queryset = queryset.filter(team=team_id)
except ValueError:
raise exceptions.ParseError()
return queryset
我怎样才能做到这一点?我必须使用 @detail_route 来拥有类似 playerslist/1/detail 的东西吗?我已经尝试过了,但 DRF 的文档只显示了一个示例,对我来说根本不清楚。
【问题讨论】:
-
你检查过这个吗? django-rest-framework.org/api-guide/viewsets 在 UserViewSet 类中有显示检索方法(对于 1 个实例)和列表方法的示例。您可以为每个方法声明不同的序列化程序。
-
这就像一个魅力,我一开始尝试过,但我一定做错了我累了,无论如何感谢您的评论,将其作为答案发布,以便我接受它。
-
我将其发布为答案。我很高兴它对你有用!
标签: python django django-rest-framework django-queryset django-serializer