标签:对象 rom bsp elf json one first any roles
#rest_framework 序列化 from rest_framework import serializers #serilizers.Serializer serializers.ModelSerializer 两种序列化方式 class RolesSerializer(serializers.Serializer): id = serializers.IntegerField() title = serializers.CharField() class RolesView(APIView): def get(self, request, *args, **kwargs): #方式1 #roles = models.Role.objects.all().values(‘id‘,‘title‘) #roles = list(roles) #ret = json.dumps(roles, ensure_ascii=False) #方式2-1 roles = models.Role.objects.all() ser = RolesSerializer(instance=roles, many=True) ret = json.dumps(ser.data, ensure_ascii=False) return HttpResponse(ret) #方式2-2 roles = models.Role.objects.all().first() ser = RolesSerializer(instance=roles, many=False) ret = json.dumps(ser.data, ensure_ascii=False) return HttpResponse(ret) class UserInfoSerializer(serializers.Serializer): username = serializer.CharField() password = serializer.CharField() user_type = serializer.IntegerField() #user_type = serializer.Charield(source="get_user_type_display") #找到每一行的对象 row.user_type # row.get_user_type_display 就可以对choices进行层级的字符 #可执行 gp = serializers.CharField(source="group.title") #外键group关联Group表,通过.获取Group表字段参数 #显示 [{"username":"ljc", "password":"123", "user_type":"VIP", "gp":"A组"}] #多对多 manytomany 不能通过source 通过serializers.SerializerMethodField() roles = serializers.SerializerMethodField() #自定义显示 def get_roles(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 class UserInfoView(APIView): def get(self, request, *args, **kwargs): users = models.UserInfo.objects.all() ser = UserInfoSerializer(instance=users, many=True) ret = json.dumps(ser.data, ensure_ascii=False) return HttpResponse(ret) #方式3 class UserInfoSerializer(serializers.ModelSerializer): user_type = serializer.Charield(source="get_user_type_display") #混合使用 roles = serializers.SerializerMethodField() #自定义显示 class Meta: model = models.UserInfo #fields = "__all__" 全部自动生成 #fields = [‘id‘, ‘username‘, ‘password‘] #自定义 #fields = [‘id‘, ‘username‘, ‘password‘, ‘user_type‘] fields = [‘roles‘] #复杂的 def get_roles(self, row): role_obj_list = row.roles.all() #获取角色对象 ret = [] for item in role_obj_list: ret.append({‘id‘:item.id, ‘title‘:item.title}) class UserInfoView(APIView): def get(self, request, *args, **kwargs): users = models.UserInfo.objects.all() ser = UserInfoSerializer(instance=users, many=True) ret = json.dumps(ser.data, ensure_ascii=False) return HttpResponse(ret) #小清新版 class UserInfoSerializer(serializers.ModelSerializer): class Meta: model = models.UesrInfo fields = "__all__" depth = 1 #这个就可以将所有的数据都显示了 默认为0 只是关联本表的数据 depth最好0-4层就好了 #表与表之间的manytomany onetoone foreignkey 表示一层 第二个表再关联 就2层 连表操作 class UserInfoView(APIView): def get(self, request, *args, **kwargs): users = models.UserInfo.objects.all() ser = UserInfoSerializer(instance=users, many=True) ret - json.dumps(ser.data, ensure_ascii=False) #ensure_ascii=False 显示中文 return HttpResponse(ret)
标签:对象 rom bsp elf json one first any roles
原文地址:https://www.cnblogs.com/Liang-jc/p/9399024.html