zoukankan      html  css  js  c++  java
  • DRF

    models.py:

    from django.db import models
    
    
    class UserGroup(models.Model):
        title = models.CharField(max_length=32)
    
    
    class UserInfo(models.Model):
        user_type_choices = (
            (1, "普通用户"),
            (2, "管理员"),
            (3, "超级管理员"),
        )
        user_type = models.IntegerField(choices=user_type_choices)
    
        username = models.CharField(max_length=32,unique=True)
        password = models.CharField(max_length=64)
    
        group = models.ForeignKey("UserGroup", on_delete=models.DO_NOTHING)
        roles = models.ManyToManyField("Role")
    
    
    class Role(models.Model):
        title = models.CharField(max_length=32)
    

    role 表中数据

    usergroup 表中数据

     userinfo 表中数据

    userinfo_role 表中数据

    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 UserSerializers(serializers.Serializer):
        # 获取 UserInfo 表的 user_type 字段的 key
        # 变量名是任意取的,因为通过 source 指定了字段
        user_type_id = serializers.CharField(source="user_type")
        # 获取 UserInfo 表的 user_type 字段的 value
        user_type_title = serializers.CharField(source="get_user_type_display")
        # 获取 UserInfo 表的 username 和 password 字段
        username = serializers.CharField()
        password = serializers.CharField()
        # 获取 UserInfo 表关联的 UserGroup 表的 title 字段(一对多的关系)
        user_group = serializers.CharField(source="group.title")
    
        # 获取 UserInfo 表关联的 Role 表的 id、title 字段(多对多关系)
        user_role = serializers.SerializerMethodField()
        # 命名规则:get_变量名,user_obj 为 user 对象
        def get_user_role(self, user_obj):
            role_list = user_obj.roles.all()
            ret = []
            # 获取 Role 表中的数据
            for item in role_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 = UserSerializers(instance=users, many=True)
            ret = json.dumps(ser.data, ensure_ascii=False)
            return HttpResponse(ret)
    

    访问:

  • 相关阅读:
    Vscode开发工具中的Simple React Snippets插件,对React开发有哪些便捷
    函数防抖和节流
    4.怎么样用CSS实现一个loading效果
    3.常见清除浮动的
    2.css处理各种溢出
    1. css画三角形
    2.javascript中call()和apply()区别
    1.js的继承的实现方法
    css、js小技巧
    JS函数声明和函数表达式的关系
  • 原文地址:https://www.cnblogs.com/sch01ar/p/14295875.html
Copyright © 2011-2022 走看看