我正在为这样的视图提供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'),
我知道它错了,只是不确定它应该如何构建。
答案 0 :(得分:0)
以下是此行的正确版本:
'company': request.data.get('profile', dict()).get('company'),
如果数据缺少一个'配置文件,它的作用是提供一个空的dict作为默认参数。对象,或者如果有对象,请在其上调用get(' company')。