django-rest框架ManyToManyField创建和更新



我是Django的新手,所以我遇到了一些问题。我使用的是django-rest框架。这些是我的模型类:

class Product(models.Model):
    name = models.CharField(max_length=100)
    price = models.FloatField()
    sizes = models.ManyToManyField(Size)
    ...
class Size(models.Model):
    name = models.CharField(max_length=100)
    ...

我想要一个产品序列化程序和一个视图集,它允许创建一个具有其大小的产品。

class ProductSerializer(serializers.ModelSerializer):
    sizes = SizeSerializer(many=True)
    class Meta:
        model = Product
        fields = ('id', 'name', 'price', 'sizes')
        read_only_fields = ('id',)

上面写的序列化程序允许获取产品的大小,但我不能创建或更新产品的大小。

我怎样才能达到我的目标?

我解决了创建一个序列化程序以获得嵌套大小的产品,以及创建一个仅使用id创建和更新产品的序列化程序的问题。

class ProductSerializer(serializers.ModelSerializer):
    sizes = SizeSerializer(many=True) # nested objects
    class Meta:
        model = Product
        fields = ('id', 'name', 'price', 'sizes')
        read_only_fields = ('id',)

class ProductCreateUpdateSerializer(serializers.ModelSerializer):
    # no nested objects, it accepts only size ids
    class Meta:
        model = Product
        fields = ('id', 'name', 'price', 'sizes')
        read_only_fields = ('id',)

也许客户端会有一些更改。

相关内容

  • 没有找到相关文章

最新更新