一.生成多对多的数据库
在Django应用中的models.py中写入以下代码:
from django.db import models # Create your models here. # 角色表 class Role(models.Model): role = models.CharField(max_length=100) # 角色 # 用户表 class User(models.Model): STATUS = ((0, "禁用"), (1, "启用")) # 是否请用用户 username = models.CharField(max_length=100) # 用户名 mobile = models.CharField(max_length=11) # 电话 email = models.EmailField() # 邮箱 status = models.IntegerField(choices=STATUS, default=1) # 请用状态 role = models.ManyToManyField(Role) # 关联角色表
在终端执行
python manage.py makemigrations 应用名
python manage.py migrate 应用名
这两个命名是生成迁移文件和迁移数据库
二.查看生成的数据库
当我们迁移数据库之后,会出现
这样的三个数据库
usertable_role是角色管理的数据库
usertable_user是用户管理的数据库
usertable_user_role是用户和角色关联的数据库
三.写应用中的views.py
获取所有数据的方法
from django.shortcuts import render from usertable.models import * # Create your views here. from django.views import View from django.http import JsonResponse class Usertable(View): def get(self, request): all = [] keyword = request.GET.get("keyword") # 获取搜索的值,如果没有keyword的值的话,keyword就为None page = int(request.GET.get("page", 1)) # 当前页,如果为空就为第一页 page_size = int(request.GET.get("page_size", 2)) # 每页显示的数据,如果为空就每页显示2条数据 if keyword is not None: # 判断keyword是否为空,如果为空就搜索全部,不为空就搜按username进行搜索 alldata = User.objects.filter(username__contains=keyword) # 按username进行搜索 else: alldata = User.objects.all() # 就搜索全部 alldata = alldata[(page - 1) * page_size:page * page_size] # 根据下标进行分页 for i in alldata: all.append({ "id": i.id, "username": i.username, "mobile": i.mobile, "email": i.email, "status": i.status, "role": list(i.role.all().values()) # 多对多用户获取角色的方法 }) return JsonResponse({"all": all})