6

在 sweetpie 我的 url: /api/v1/course/1/?format=json 给出以下 json:

{
created_on: "2012-02-27T08:00:54",
description: "this is course 1",
id: "1",
resource_uri: "/api/v1/course/1/",
subjects: [
    "/api/v1/subject/1/",
    "/api/v1/subject/2/"
],
title: "Course 1"
}

我想做类似的事情:

/api/v1/course/1/subjects/?format=json   

仅获取给定课程的科目列表。这可能吗?

4

3 回答 3

5

我猜你想做这样的事情你指定一个fields参数,这样用户就可以只请求他们想要的字段。在您的情况下,用户将发送请求

/api/v1/course/1/?format=json&fields=subjects 

实现这一点的一种方法是扩展 Tastypie 以提供此功能。目前,full_dehydrate方法迭代所有字段并对每个字段进行脱水。您可以添加检查以查看用户是否输入fields,如果是,则跳过任何未指定字段的脱水阶段。

于 2012-03-06T20:32:27.857 回答
0

反向关系默认情况下不是在美味派中创建的,但它看起来很简单:

http://django-tastypie.readthedocs.org/en/latest/resources.html#reverse-relationships

class CourseResource(ModelResource):
    subjects = fields.ToManyField('myapp.api.resources.SubjectResource', 'subjects', full=True)
    class Meta:
        queryset = Course.objects.all()

class SubjectResource(ModelResource):
    course = fields.ToOneField(CourseResource, 'courses')

    class Meta:
        queryset = Subject.objects.all()
于 2012-02-29T09:08:15.730 回答
0

我遇到过同样的问题。然后我实现了一个非常简单的 django-tastypie 扩展,称为django-tastypie-specific-fields,它将帮助您选择您感兴趣的字段。您将能够通过这样一个简单的请求获取数据

/api/v1/course/1/?format=json&fields=subjects

它也会给你更多的可能性。

于 2016-09-28T22:18:38.603 回答