【问题标题】:Django Rest Framework - accessing nested json objectDjango Rest Framework - 访问嵌套的 json 对象
【发布时间】:2016-01-22 05:32:10
【问题描述】:

我正在向这样的视图提供 JSON -

{
    "username": "name",
    "first_name": "john",
    "last_name": "doe",
    "email": "jdoe@hotmail.com",
    "profile": {
        "company": "abc corp"
    }
}

然后我将它传递到以下视图中以发布 -

    def post(self, request, format=None):
        uuid = generate_uuid(request.data.get('username'))
        data = {'username': request.data.get('username'),
                'first_name': request.data.get('first_name'),
                'last_name': request.data.get('last_name'),
                'email': request.data.get('email'),
                'company': request.data.get('profile').('company'),
                'uuid': str(uuid)}
        serializer = UserSerializer(data=data)
        if serializer.is_valid():
            print serializer.data
#            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

我很难理解如何构造data 以维护嵌套值,正如您所见,我还包括uuid 的字段,该字段也将位于嵌套的profile 对象中。

然后这些将被传递到我的序列化程序中 -

class UserSerializer(serializers.ModelSerializer):
    profile = UserProfileSerializer()
    class Meta:
        model = User
        fields = ('username', 'first_name', 'last_name', 'email', 'profile')

我目前的观点在这一行给出了一个语法错误 -

'company': request.data.get('profile').('company'),

我知道这是错误的,只是不知道应该如何构建它。

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    这是该行的正确版本:

    'company': request.data.get('profile', dict()).get('company'),
    

    如果数据缺少“配置文件”对象,或者如果有,则提供一个空字典作为默认参数,如果有,则调用 get('company')。

    【讨论】:

    • 嗯...我认为我的问题没有正确。我看到这是在做什么,但看起来正在使 json 变平。我发现只是做'profile': request.data.get('profile') 会自动放入嵌套公司,但是我如何将'uuid' 包含在嵌套的'profile' 中?
    • @whoiearth uuid 到底是什么?您的 UserSerializer 没有 uuid 字段,我很确定默认的 Django User 模型也没有。 uuid 到底在哪里得救了?
    • 我正在生成一个 uuid 并将其存储在 UserProfile 模型中,然后我使用 OneToOneField 链接到 User。
    • 我将此标记为正确,但我最终还是使用了此处的文档 - http://stackoverflow.com/questions/19772457/django-rest-framework-creating-custom-user
    猜你喜欢
    • 2017-04-09
    • 1970-01-01
    • 2018-01-26
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多