2015-10-07 82 views
1

我有以下兩個Django模型(本例簡化)。Django Rest框架:在Viewset中嵌入Viewset

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框架我已成立了一個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/participant/:study_id/messages/:msg_id (PATCH partial update of message) 

與API工作更容易這將是不錯的方式嵌入Message視圖集的Participant內,因爲這會使邏輯GET和POST上簡單的消息,以及。這可能嗎?如果不是,我怎樣才能將消息的msg_id傳遞給@detail_rouet?

+1

查看DRF嵌套路由器。 https://github.com/alanjds/drf-nested-routers –

回答

1

這是一個嵌套路由器的情況。除了已經提到的那個,我會命名爲https://github.com/chibisov/drf-extensions

就我個人而言,我使用了帶有drf-extensions的Restangular。提供緩存支持。

兩個提示如何啓用嵌套路由:

  • 您必須在您的視圖集中申報所操作
  • 你必須正確地遵循嵌套路由器定義模型。
相關問題