django-rest-framework ManyToManyField 创建和更新
django-rest-framework ManyToManyField create and update
我是 Django 的新手,所以我遇到了一些问题。我正在使用 django-rest-framework。
这些是我的模型 类:
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',)
也许客户端会有一些变化。
我是 Django 的新手,所以我遇到了一些问题。我正在使用 django-rest-framework。 这些是我的模型 类:
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',)
也许客户端会有一些变化。