2015-11-19 70 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