Django drf序列化
2019-03-03 本文已影响0人
Ginta
定义类
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