drf序列化程序中的可写create()方法

时间:2018-06-08 15:16:12

标签: python django django-rest-framework

models.py

class Product(models.Model):
    product_name = models.CharField(max_length=32)
    quantity = models.IntegerField()
    remarks = models.TextField(blank=True)

class Vendor(models.Model):
    vendor_name = models.CharField(max_length=50)
    address = models.CharField(max_length=100)
    bill_no = models.CharField(max_length=8)
    product = models.ManyToManyField(Product)

serializers.py

class ProductSerializer(serializers.ModelSerializer):
    class Meta:
        model = Product
        fields = '__all__'

class VendorSerializer(serializers.ModelSerializer):
    product = ProductSerializer(many=True, read_only=False)
    class Meta:
        model = Vendor
        fields = '__all__'

views.py

from rest_framework import viewsets

class VendorViewset(viewsets.ModelViewSet):
    serializer_class = VendorSerializer
    queryset = Vendor.objects.all()

如何覆盖VendorSerializer上的可写create()方法,以将产品详细信息添加到产品来自与供应商相关的供应商?

1 个答案:

答案 0 :(得分:0)

您可以覆盖内置的serializer create method,但在pre_save signal中处理对象本身可能更有意义,这样您就可以访问ManyToMany对象字段。