在将数据传递给序列化器django api时添加额外的上下文 [英] adding an extra context while passing data to serializer django api
问题描述
我正在尝试在我的表中使用 request.data
添加一个额外的字段auth_token,但是它给出了错误.错误是- data ['auth_token_id'] = auth_tokenTypeError:列表索引必须是整数或切片,而不是str
I am trying to add an extra field auth_token in my table with the request.data
but it is giving errors. The error is -
data['auth_token_id'] = auth_token
TypeError: list indices must be integers or slices, not str
我的代码如下:
serializers.py
serializers.py
class AppSerializer(serializers.ModelSerializer):
class Meta:
model = ThirdPartyApps
fields = ('app_name', 'package_name', 'auth_token_id')
views.py
@api_view(['POST'])
def add_apps(request):
data = request.data
auth_token = request.META.get('HTTP_AUTHTOKEN', '')
data['auth_token_id'] = auth_token
serializer = AppSerializer(data=data, many=True)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
else:
return Response(serializer.errors)
我正在寻找一种通过串行器传递额外数据的方法.我只想将 auth_token
添加到模型中,就像 request.data
一样,但这给了这个错误-
I am looking for a way to pass extra data through the serializer.
I just want to add auth_token
to my model like the request.data
but it is giving this error -
data ['auth_token_id'] = auth_tokenTypeError:列表索引必须是整数或切片,而不是str
推荐答案
您应将其作为上下文传递:
You should pass it as context like so:
serializers.py
serializers.py
class AppSerializer(serializers.ModelSerializer):
auth_token_id = serializers.SerializerMethodField()
def get_auth_token_id(self, obj):
if "auth_token_id" in self.context:
return self.context["auth_token_id"]
return None
class Meta:
model = ThirdPartyApps
fields = ('app_name', 'package_name', 'auth_token_id')
views.py
@api_view(['POST'])
def add_apps(request):
data = request.data
auth_token = request.META.get('HTTP_AUTHTOKEN', '')
serializer = AppSerializer(data=data, many=True, context = {"auth_token_id": auth_token})
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_200_OK)
else:
return Response(serializer.errors)
这篇关于在将数据传递给序列化器django api时添加额外的上下文的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!