gpt4 book ai didi

python - Django 休息框架 : Embed Viewset Inside Viewset

转载 作者:太空宇宙 更新时间:2023-11-04 05:43:39 25 4
gpt4 key购买 nike

我有以下两个 Django 模型(针对此示例进行了简化)。

class Participant(models.Model):
name = models.CharField()
study_id = models.IntegerField()
...
# Lots of other fields

class Message(models.Model):
text = models.CharField()
participant = models.ForeignKey('Participant')

使用 Django Rest Framework,我为每个模型设置了一个 ModelSerializerModelViewSet。使用 @detail_route@list_route 装饰器,我设置了以下 URL。

/api/participant/ (GET,POST for list and create)
/api/participant/:study_id (GET,PUT for retrieve and update)
/api/participant/:study_id/messages (GET for list POST to send message)

我想添加以下 url 以更改消息元数据。这将使在 restangular

中使用 API 变得更加容易
/api/participant/:study_id/messages/:msg_id (PATCH partial update of message)

如果有一种方法可以在 Participant 中嵌入一个 Message ViewSet 会很好,因为这也会使消息上的 GET 和 POST 逻辑更简单。这可能吗?如果不是,我如何将 msg_id 传递给消息上的@detail_rouet?

最佳答案

这是嵌套路由器的情况。在已经提到的旁边,我将命名为https://github.com/chibisov/drf-extensions

就个人而言,我使用了带有 drf-extensions 的 Restangular。附带缓存支持。

关于如何启用嵌套路由的两个提示:

  • 您必须在您的 View 集中声明它运行的模型
  • 您必须正确遵循嵌套路由器定义。

关于python - Django 休息框架 : Embed Viewset Inside Viewset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33003677/

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