Django通过ModelViewSet序列化程序将额外数据传递给ModelSerializer create.save()
我有这个模型视图集Django通过ModelViewSet序列化程序将额外数据传递给ModelSerializer create.save(),django,django-rest-framework,Django,Django Rest Framework,我有这个模型视图集 def create(self, request, *args, **kwargs): data_to_save = request.data pharmacy = Pharmacy.objects.get(pk=request.data['pharmacy']) serializer = self.get_serializer(data=data_to_save) serializer.is_valid(raise_exception=Tr
def create(self, request, *args, **kwargs):
data_to_save = request.data
pharmacy = Pharmacy.objects.get(pk=request.data['pharmacy'])
serializer = self.get_serializer(data=data_to_save)
serializer.is_valid(raise_exception=True)
serializer.save(myArg=pharmacy)
headers = self.get_success_headers(serializer.data)
return Response({'results': serializer.data}, status=status.HTTP_201_CREATED, headers=headers)
self.get\u序列化程序(…)
指向一个类PharmacyUserSerializer(serializers.ModelSerializer):…
在PharmacyUserSerializer(…)
中,我覆盖了create(…)
函数,如下所示
def create(self, validated_data):
request = self.context['request']
myArg = self.context['myArg']
pharmacy = request.user.pharmacy
user = User.objects.create_user(
**validated_data,
user_type=c.PHARMACY,
pharmacy=pharmacy
)
return user
根据,此行看起来是正确的(将参数传递给save方法)
serializer.save(myArg=pharmacy)
执行上述操作会产生错误
TypeError:“myArg”是此函数的无效关键字参数
发生了什么事?传递数据的正确方式是什么(我想我在文档中遗漏了一些东西)
如何在
PharmacyUserSerializer
中截取这些额外数据?您只能在save方法中将模型的属性传递给serializer,而不是您想要的任何内容。要将附加变量传递给序列化程序,可以使用上下文
。检查如何使用它的链接。
在您的情况下,您应该使用以下代码:
self.get_serializer(data=data_to_save, context={'myArg': pharmacy})
您已经在PharmacyUserSerializer中编写代码以获取myArg
请回答您的问题并添加完整的跟踪。