Django的多对多如何获取到数据并实现搜索分页

简介: python manage.py makemigrations 应用名python manage.py migrate 应用名这两个命名是生成迁移文件和迁移数据库

一.生成多对多的数据库

在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 应用名


这两个命名是生成迁移文件和迁移数据库

二.查看生成的数据库

当我们迁移数据库之后,会出现

fb8f3759b7c049d7bbbab1be91b0d36a.png

这样的三个数据库


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})


相关文章
|
2月前
|
SQL 监控 数据库
深入探索Django ORM:高效数据操作的秘诀与实践####
在当今的Web开发领域,提升数据访问层的效率是优化应用性能的关键。本文旨在通过剖析Django框架中的ORM(对象关系映射)机制,揭示其如何简化数据库交互,并探讨一系列高级技巧与策略,帮助开发者构建更高效、可维护的数据访问代码。我们不涉及安装步骤或基础概念,而是聚焦于实战经验分享,旨在为中高级开发者提供深度洞见。 ####
|
3月前
|
JavaScript 前端开发 Python
django接收前端vue传输的formData图片数据
django接收前端vue传输的formData图片数据
70 4
|
3月前
|
数据库 数据安全/隐私保护 数据库管理
#765372#基于django和neo4j的通用数据展示系统
#765372#基于django和neo4j的通用数据展示系统
27 1
|
3月前
|
搜索推荐 关系型数据库 MySQL
#874358#基于django/neo4j的电视剧浏览数据推荐系统
#874358#基于django/neo4j的电视剧浏览数据推荐系统
37 0
|
5月前
|
数据采集 自然语言处理 监控
【优秀python毕设案例】基于python django的新媒体网络舆情数据爬取与分析
本文介绍了一个基于Python Django框架开发的新媒体网络舆情数据爬取与分析系统,该系统利用Scrapy框架抓取微博热搜数据,通过SnowNLP进行情感分析,jieba库进行中文分词处理,并以图表和词云图等形式进行数据可视化展示,以实现对微博热点话题的舆情监控和分析。
216 3
【优秀python毕设案例】基于python django的新媒体网络舆情数据爬取与分析
|
5月前
|
前端开发 关系型数据库 Python
Django入门到放弃之分页器
Django入门到放弃之分页器
|
5月前
|
安全 中间件 项目管理
Django 后端架构开发:分页器到中间件开发
Django 后端架构开发:分页器到中间件开发
49 1
|
5月前
|
监控 数据可视化 前端开发
基于python django生产数据与计划大屏,可链接数据库
本文介绍了一个基于Python Django框架开发的生产数据与计划大屏系统,该系统能够实时采集和展示生产数据,支持数据可视化和实时更新,以提高生产监控的效率和质量。
|
5月前
|
数据可视化 安全 前端开发
基于Django的美团药品数据分析与可视化系统,有多用户功能,可增删改查数据
本文介绍了一个基于Django框架开发的美团药品数据分析与可视化系统,该系统具备多用户功能,支持数据的增删改查操作,并采用MySQL、pandas、echarts和bootstrap技术栈,为用户提供了一个高效、安全且实用的药品数据管理和分析平台。
基于Django的美团药品数据分析与可视化系统,有多用户功能,可增删改查数据
|
5月前
|
API 数据库 开发者
【独家揭秘】Django ORM高手秘籍:如何玩转数据模型与数据库交互的艺术?
【8月更文挑战第31天】本文通过具体示例详细介绍了Django ORM的使用方法,包括数据模型设计与数据库操作的最佳实践。从创建应用和定义模型开始,逐步演示了查询、创建、更新和删除数据的全过程,并展示了关联查询与过滤的技巧,帮助开发者更高效地利用Django ORM构建和维护Web应用。通过这些基础概念和实践技巧,读者可以更好地掌握Django ORM,提升开发效率。
52 0