如何解决如何覆盖 Viewset 中的 create 方法以接受我在 DRF 中的自定义序列化程序?
我需要为我的模型创建一个实例,但在我的 request.data 中,我没有序列化程序的正确信息。
class CotizacionViewSet(viewsets.ModelViewSet):
serializer_class = CotizacionSerializer
permission_classes = [IsAuthenticated]
def create(self,request):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
serializer.save()
return Response({'message': 'Cotizacion creada correctamente.'},status=status.HTTP_201_CREATED)
return Response(serializer.errors,status=status.HTTP_400_BAD_REQUEST)
我的序列化器是
CotizacionSerializer(serializers.ModelSerializer):
cliente = ClienteSerializer()
curso = CursoCatalogoSerializer()
class Meta:
model = Cotizacion
exclude = ('state','created_date','modified_date','deleted_date')
我想要从客户和curso那里给我提供serilizers的信息,但我不知道如何创建一个Cotizacion。
解决方法
要创建 Cotizacion,您可以覆盖序列化程序中的 create 方法。
class CotizacionSerializer(serializers.ModelSerializer):
cliente = ClienteSerializer()
curso = CursoCatalogoSerializer()
class Meta:
model = Cotizacion
exclude = ('state','created_date','modified_date','deleted_date')
def create(self,validated_data):
cliente = validated_data.pop("cliente")
curso = validated_data.pop("curso")
# or you just get the data like
# cliente = validated_data["cliente"]
# then create Cotizacion
cotizacion = Cotizacion.objects.create(**validated_data)
return cotizacion
我不确定 Cotizacion 和客户/curso 之间的关系。但是,您可以在此方法中执行所需的操作。如果您能向我们展示模型,我可能会提供更多帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。