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

请回答您的问题并添加完整的跟踪。