DRF - ModelSerializer 序列化
数据库结构和上篇文章一样:https://www.cnblogs.com/sch01ar/p/14295875.html
views.py:
from rest_framework.views import APIView
from rest_framework import serializers
from drf import models
import json
from django.shortcuts import HttpResponse
class UserModelSerializers(serializers.ModelSerializer):
class Meta:
model = models.UserInfo
# 获取所有的字段
fields = "__all__"
class UserInfoView(APIView):
def get(self, request, *args, **kwargs):
users = models.UserInfo.objects.all()
ser = UserModelSerializers(instance=users, many=True)
ret = json.dumps(ser.data, ensure_ascii=False)
return HttpResponse(ret)
访问:

一些字段显示的只剩下 id 值
也可以显示指定字段,改写 UserModelSerializers
class UserModelSerializers(serializers.ModelSerializer):
class Meta:
model = models.UserInfo
# 显示指定字段
fields = ["id", "username", "password"]
访问:

也可以和 serializers.CharField() 等方法配合着使用
class UserModelSerializers(serializers.ModelSerializer):
user_type_title = serializers.CharField(source="get_user_type_display")
user_group = serializers.CharField(source="group.title")
class Meta:
model = models.UserInfo
# 显示指定字段
fields = ["user_type_title", "id", "username", "password", "user_group"]
访问:

深度:
通过 depth 指定 UserInfo 表关联的表的层次
例如:
UserInfo 表的层次为 0,而与该表 ForeignKey 关联的 UserGroup 和 ManyToManyField 关联的 Role 表,的层次为 1
class UserModelSerializers(serializers.ModelSerializer):
class Meta:
model = models.UserInfo
# 获取所有的字段
fields = "__all__"
# 指定层次为 1
depth = 1
访问:


浙公网安备 33010602011771号