Django rest框架:嵌套对象未传递给validated_data

时间:2015-08-06 23:44:31

标签: python django-rest-framework

这对我理解序列化程序应该如何工作肯定是一个问题。

更改了序列化程序的属性权限后,我发现我的作者嵌套对象在validated_data上变空了。

这是我的代码:

class ThreadSerializer(serializers.Serializer):
    class Meta:
            model = Thread
            queryset=Thread.objects.all()
            fields = ('id', 'title', 'description', 'author', 'created_at')

    pk = serializers.IntegerField(read_only=True)
    title = serializers.CharField(required=False, allow_blank=False, max_length=100)
    description = serializers.CharField(style={'base_template': 'textarea.html'}, required=False)
    author = AuthorSerializer()
    created_at = serializers.DateTimeField(required=False)

    def create(self, validated_data):
        """
        Create and return a new `Thread` instance, given the validated data.
        """
        author_data = validated_data.pop('author')
        if author_data:
            author = Author.objects.get_or_create(**author_data)
            validated_data['author'] = author

        return Thread.objects.create(**validated_data)

有效载荷也很简单: { "title": "2", "description": "testing nested objects", "author": { "name": "ron", "email" : "email@mail.com" }}

然而,在validated_data变量上,我看到的是一个空的OrderedDict。

有人能指出我应该解决的问题吗?

1 个答案:

答案 0 :(得分:1)

这里的问题出在客户端。

信息作为表单数据传递,而不是作为ajax请求上的application / json传递。