我有以下两个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我为每个模型设置了ModelSerializer
和ModelViewSet
。使用@detail_route
和@list_route
装饰器,我设置了以下网址。
/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)
我想添加以下网址来更改邮件元数据。这样可以在restangular
/api/participant/:study_id/messages/:msg_id (PATCH partial update of message)
有一种方法可以在Message
中嵌入Participant
ViewSet,因为这样可以使消息上的GET和POST逻辑更简单。这可能吗?如果不是,我如何将msg_id传递给消息上的@detail_rouet?
答案 0 :(得分:1)
这是嵌套路由器的情况。除了已经提到的那个,我将命名为https://github.com/chibisov/drf-extensions
就个人而言,我已经使用Restangular和drf-extensions。附带缓存支持。
有关如何启用嵌套路由的两个提示: