我有两种模型,一种是盒子,一种是盒子评论:
class BoxViewSet(viewsets.ModelViewSet):
queryset = Box.objects.all()
permission_classes = IsAuthenticated,
serializer_class = BoxSerializer
class BoxCommentViewSet(viewsets.ModelViewSet):
model = BoxComment
serializer_class = CommentSerializer
permission_classes = IsAuthenticated
def get_queryset(self):
# this should return a queryset that filters based on the
# box in the route
return BoxComment.objects.all()
如果我设置了路由器以使 Boxes 可用/boxes/
以及特定盒子可在/boxes/{id}/
using
router.register(r'boxes', feed.views.BoxViewSet)
是否可以在以下位置发表评论:/boxes/{id}/comments/
?或者我应该设置一个单独的路由并使用 GET/POST 参数来引用特定的框?
我没有看到执行此操作有任何问题(我已经在我的项目中使用它并且一切都很好)-您所需要的只是一个带有box_id
夸格。这与“嵌套路由器”无关,它只是通过 url kwarg 进行显式过滤的另一个端点。
router.register(r'boxes/(?P<box_id>\d+)/comments', BoxCommentViewSet)
然后直接过滤掉对应的评论即可get_queryset
class BoxCommentViewSet(viewsets.ModelViewSet):
def get_queryset(self):
return BoxComment.objects.filter(
box=self.kwargs['box_id']
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)