美文网首页
Django drf序列化

Django drf序列化

作者: Ginta | 来源:发表于2019-03-03 11:51 被阅读0次

    定义类

    class RolesSerializers(serializers.Serializer):
        title = serializers.CharField()
    
    class UserInfoSerializers(serializers.ModelSerializer):
        class Meta:
            model = models.UserInfo
            # fields = "__all__"
            fields = ['username', 'id', 'password']
    

    字段

    1. title = serializers.CharField(source="xxx.xx'')
    2. 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 drf序列化

          本文链接:https://www.haomeiwen.com/subject/nnjpuqtx.html