定义类
class RolesSerializers(serializers.Serializer):
title = serializers.CharField()
class UserInfoSerializers(serializers.ModelSerializer):
class Meta:
model = models.UserInfo
# fields = "__all__"
fields = ['username', 'id', 'password']
字段
- title = serializers.CharField(source="xxx.xx'')
- title= serializers.SerializerMethodField() # 自定义显示
class UserInfoSerializers(serializers.ModelSerializer):
rls = serializers.SerializerMethodField() # 自定义显示
class Meta:
model = models.UserInfo
# fields = "__all__"
fields = ['username', 'id', 'password', 'rls',]
# 自定义方法
def get_rls(self, row):
role_obj_list = row.roles.all()
ret = []
for item in role_obj_list:
ret.append({'id': item.id, 'title': item.title})
return ret
自动化连表
UserInfo类中有外键和多对多的键,直接序列化的结果是只显示id,如果想得到更多的信息可以用depth字段,可以理解为深度读取,默认为0,就是我们默认显示的结果。如果改为1,表示深度为1,就可以再往下读取一层所有的信息,在这里就可以读取到用户的角色和组别两个类中所有的信息。
class UserInfoSerializers(serializers.ModelSerializer):
class Meta:
model = models.UserInfo
fields = "__all__"
# fields = ['username', 'password', 'ooo', 'rls', 'group']
depth = 1 # 深度为1
本文探讨了Django REST框架中序列化器的高级用法,包括自定义字段展示、深度序列化关联模型以及如何利用SerializerMethodField实现复杂数据结构的序列化。
1917

被折叠的 条评论
为什么被折叠?



