Django rest的viewset调用默认序列化程序的create方法,而不是重写方法

2024-04-19 21:18:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个重写了create方法的嵌套序列化程序:

class OrderSerializer(serializers.ModelSerializer):
    data_model=Order
    user = UserSerializer(many=False)


    class Meta:
        model = Order
        fields = ['uid', 'user','price']

    def create(self, validated_data):
        validated_data=validated_data.pop('user')
        order=self.data_model.objects.create(**validated_data)
        order.user=self.context['request'].user
        order.save()
        return order

class LifeOrderSerializer(OrderSerializer):
   data_model =LifeOrder

   class Meta(OrderSerializer.Meta):
       model = LifeOrder
       fields = OrderSerializer.Meta.fields + [ "birth_year",
                                            "contract_duration",]

在视图.py在

^{pr2}$

但当我发送一个post请求来创建时,模型序列化程序defualt create方法会被调用!有什么问题吗?在


Tags: 方法self程序fieldsdatamodel序列化create
2条回答

是ModelViewSet的CreateModelMixin在调用我自己的create函数之前引发了异常。 我完成了modelview集的创建,问题解决了!在

viewset中提到的serializer\u类是LifeOrderSerializer,我认为它必须是OrderSerializer,因为这是重写{}的序列化程序。在

如果LifeOrderSerializerOrderSerializer的子级,请确保您已经重写了create()方法以使其工作。在

比如:

def create(self, validated_data):
    order = super(OrderSerializer, self).create(validated_data)
    return order

相关问题 更多 >