2015-11-19 175 views
2

我使用Django的REST框架,目前成立了我Django的REST API

一個url/API /場/

,顯示的是已經在數據庫課程列表。課程有講座外鍵,我想讓它可以訪問每門課程的講座。

目前我已經設置好了/ api/lectures可以帶你參加所有的講座。

router.register(r'course', views.CourseViewSet) 
router.register(r'lecture', views.LectureViewSet) 

不過,我不知道如何設置它,這樣當你在看數學課程,你只能得到數學講座..

謝謝!

編輯:我的模型:

class Lecture(models.Model): 
    title = models.CharField(max_length=128, unique=True, null=True) 
    recordings = models.ForeignKey(Recording, null=True) 
    keywords = models.ForeignKey(Keyword, null=True) 

    def __str__(self): 
     return self.title 

class Course(models.Model): 
    title = models.CharField(max_length=128, unique=True) 
    lecturer = models.CharField(max_length=128) 
    lectures = models.ForeignKey(Lecture, null=True) 

    def __str__(self): 
     return self.title 
+0

你能展示你的模型嗎? –

+0

@GeoJacob當然,我現在已經添加了他們 – tryingtolearn

+2

根據你的模型,一門課只有一門課。如果你想要多個講座,那麼你需要改變這個關係很多。或者,如果一次講座只採用課程,則必須在講座模式中授予課程作爲外部關鍵字段。 –

回答

0

因此,這裏的答案;您可以使用詳細路線來處理這種情況; http://www.django-rest-framework.org/api-guide/routers/通過DRF路由文檔;

class CourseViewSet(ModelViewSet): 

    @detail_route(methods=['get']) 
    def lectures(self, request, pk=None): 
     # code to get all lectures of your current course 
     # pk will be course id(ex: id of Maths course) 
     data = {} # serialize the data 
     return Response(data) 

所以你的網址會像;

/courses/id/lectures 
+0

我不確定我完全遵循這裏發生的事情。你能解釋一個更完整的例子嗎?道歉,我仍然新的在這。 – tryingtolearn