Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django REST JSON API:如何包含嵌套的复合文档?_Django_Django Rest Framework - Fatal编程技术网

Django REST JSON API:如何包含嵌套的复合文档?

Django REST JSON API:如何包含嵌套的复合文档?,django,django-rest-framework,Django,Django Rest Framework,使用Django REST JSON Api,即Django REST Framework jsonapi==3.1.0,并具有以下数据结构:父级、singleChild、manyGrandChildren(都只是虚拟名称,singleChild表示一对一关系,manyGrandChildren表示一对多嵌套关系) 我的代码不起作用,因为我无法访问我的响应中的许多Randshildren,这类似于 如果我的url?include=语句不正确,也请更正 如何实现这一点?要在序列化程序中包含孙子,我

使用Django REST JSON Api,即Django REST Framework jsonapi==3.1.0,并具有以下数据结构:父级、singleChild、manyGrandChildren(都只是虚拟名称,singleChild表示一对一关系,manyGrandChildren表示一对多嵌套关系)

我的代码不起作用,因为我无法访问我的响应中的许多Randshildren,这类似于 如果我的url?include=语句不正确,也请更正


如何实现这一点?

要在序列化程序中包含孙子,我们需要在子序列化程序上定义包含的\u序列化程序和包含的\u资源,并在子序列化程序中包含孙子。在这种情况下,我们可以从父序列化程序访问它们。调皮的事情是关系。对于一对多关系,我们需要将“manyGrandChildren_集”设置为包含的_序列化程序的键,并将其作为“manyGrandChildren_集”字段包含在类元字段中

范例

class Child(serializers.HyperlinkedModelSerializer):
    included_serializers = {
        'manyGrandChildren_set': manyGrandChildrenSerializer,
    }

    class Meta:
        model = models.Child
        fields = [
           ...
           'manyGrandChildren_set'
           ...
        ]

    class JSONAPIMeta:
        included_resources = ['manyGrandChildren_set']


class Parent(serializers.HyperlinkedModelSerializer):
    included_serializers = {
        'singleChild': singleChildSerializer,
    }

    class Meta:
        model = models.Parent
        fields = [
            'field1',
            'field2', 
            'url',
        ]

    class JSONAPIMeta:
        included_resources = ['singleChild']
class Child(serializers.HyperlinkedModelSerializer):
    included_serializers = {
        'manyGrandChildren_set': manyGrandChildrenSerializer,
    }

    class Meta:
        model = models.Child
        fields = [
           ...
           'manyGrandChildren_set'
           ...
        ]

    class JSONAPIMeta:
        included_resources = ['manyGrandChildren_set']


class Parent(serializers.HyperlinkedModelSerializer):
    included_serializers = {
        'singleChild': singleChildSerializer,
    }

    class Meta:
        model = models.Parent
        fields = [
            'field1',
            'field2', 
            'url',
        ]

    class JSONAPIMeta:
        included_resources = ['singleChild']