在API的模型类中使用django-rest-framework中的serializers.Serializer类来定义并配置API返回的数据字段。
例如,以下是一个模型类和对应的序列化器类:
from django.db import models
from rest_framework import serializers
class User(models.Model):
name = models.CharField(max_length=50)
email = models.EmailField()
class UserSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
name = serializers.CharField(max_length=50)
email = serializers.EmailField()
def create(self, validated_data):
return User.objects.create(**validated_data)
def update(self, instance, validated_data):
instance.name = validated_data.get('name', instance.name)
instance.email = validated_data.get('email', instance.email)
instance.save()
return instance
在上述代码中,User是一个简单的Django模型类,UserSerializer则继承自serializers.Serializer类,并定义了id、name和email三个字段的行为。其中,id字段的read_only属性被设置为True,表明该字段只能用于序列化输出,不能用于反序列化输入。
在完成UserSerializer类的配置后,我们就可以在视图函数中使用它来序列化或反序列化User对象了。例如:
from rest_framework import viewsets
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
serializer_class = UserSerializer
这里,我们将UserViewSet视图集继承自rest_framework.viewsets.ModelViewSet类,并在声明中指定了queryset和serializer_class两个属性。这样,Django REST framework将自动根据UserSerializer类的配置来序列化或反序列化User对象。