ModelSerializer 相较于普通Serializer 进行了进一步的封装,可以直接与数据库表关联,即与 model 关联。
之前普通的 Serializer 中需要定义的内容有:
class BookSerializers(serializers.Serializer):
title=serializers.CharField(max_length=32)
price=serializers.IntegerField()
def create(self, validated_data):
new_book=Book.objects.create
(**validated_data) # 添加数据
return new_book
def update(self, instance, validated_data):
Book.objects.filter(pk=instance.
pk).update(**validated_data) # 更新数据
updated_book=Book.objects.
get(pk=instance.pk)
return updated_book
因为序列化器并不知道应该从哪个数据库表中去获取数据,因此需要手动定义字段以及create和update的内容。
但是ModelSerializer就简化了这些操作,仅仅需要告诉它需要操作的数据库表,它内部已经定义好了剩余的操作。使用ModelSerializer的代码如下,相比普通的Serializer大大简化。
class BookSerializers(serializers.ModelSerializer):
# 需要自己配置的字段写在这里
class Meta:
model = Book
# field = "__all__" 选择所有字段进行序列化
field =["title", "price"]# 选择序列化字段
# exclude =["title", "price"]排除不序列化的字段
其中Book对应需要操作的Model表。类视图view中不需要修改任何代码。