gpt4 book ai didi

python - Django REST Framework 添加一个 ViewSet 作为另一个 ViewSet 上的详细信息

转载 作者:行者123 更新时间:2023-12-02 21:56:58 26 4
gpt4 key购买 nike

我有两种模型,一种是盒子,一种是盒子评论:

类 BoxViewSet(viewsets.ModelViewSet):
查询集 = Box.objects.all()
权限类=已验证,
序列化器类 = BoxSerializer

类 BoxCommentViewSet(viewsets.ModelViewSet):
模型 = BoxComment
序列化器类 = CommentSerializer
权限类=已验证
def get_queryset(self):
# 这应该返回一个基于过滤的查询集
# 路径中的框
返回 BoxComment.objects.all()

如果我设置了路由器,使 Boxes 在 /boxes/ 可用,并且特定 Box 在 /boxes/{id}/ 可用
router.register(r'boxes', feed.views.BoxViewSet)
是否可以在 /boxes/{id}/comments/ 上发表评论?或者我应该设置一个单独的路由并使用 GET/POST 参数来引用特定的框?

最佳答案

我没有发现执行此操作有任何问题(我已经在我的项目中使用它,一切都很好) - 您所需要的只是一个带有 box_id kwarg 的 url。这与“嵌套路由器”无关,它只是通过 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']
)

关于python - Django REST Framework 添加一个 ViewSet 作为另一个 ViewSet 上的详细信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27463055/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com