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

当我们要实现删除和修改功能的时候要传一个id

所以我们在写修改和删除的时候在urls.py写入以下代码

from django.urls import path
from usertable.views import UsertableId
urlpatterns = [
  #在路由的后面写上一个<int:id>这样就可以获取到id了
    path('usertableid/<int:id>', UsertableId.as_view(), name="usertableid"),
]

数据删除

import json
from usertable.models import *
from django.views import View
from django.http import JsonResponse
class UsertableId(View):
    def delete(self, request, id):
        User.objects.filter(id=id).delete()#直接根据id获取到数据然后用delete()进行删除
        return JsonResponse({})

数据的修改

import json
from usertable.models import *
from django.views import View
from django.http import JsonResponse
class UsertableId(View):
    def patch(self, request, id):
        stb = json.loads(request.body)  # 获取修改后的数据
        user = User.objects.get(id=id)  # 根据id选择要修改的数据
        # 进行数据的修改
        user.username = stb['username']
        user.mobile = stb['mobile']
        user.emai = stb['emai']
        user.status = stb['status']
        user.role.set(stb["role"])  # 修改用户和角色的关联表stb["role"]是一个列表
        user.save()  # 再用save()进行保存
        return JsonResponse({})


相关文章
|
7月前
|
存储 安全 数据库
Django ORM深度游:探索多对一、一对一与多对多数据关系的奥秘与实践
Django ORM深度游:探索多对一、一对一与多对多数据关系的奥秘与实践
|
8月前
|
数据采集 自然语言处理 Python
在 Django 中设计爬虫系统的数据模型与多对多关系
在构建爬虫系统时,设计合理的数据模型和多对多关系对系统的性能和可维护性至关重要。本文将探讨如何使用 Django 来设计爬虫系统的数据模型。
|
8月前
|
Python
使用Django时,如何设计模型关系(一对一、一对多、多对多)?
Django支持三种模型关联:ForeignKey(一对多),OneToOneField(一对一)和ManyToManyField(多对多)。ForeignKey示例:`Article`有一个指向`Author`的外键。OneToOneField示例:`UserProfile`与`User`一对一关联。ManyToManyField示例:`Student`和`Course`之间多对多关系。这些关联字段便于反向查询,如`article.author`获取作者,`author.article_set.all()`获取作者所有文章。
104 1
【Django实战】创建多对多关系表的三种模式及优缺点分析
【Django实战】创建多对多关系表的三种模式及优缺点分析
|
数据库 Python
Django的多对多实现添加
python manage.py makemigrations 应用名 python manage.py migrate 应用名 这两个命名是生成迁移文件和迁移数据库
|
数据库 Python
Django的多对多如何获取到数据并实现搜索分页
python manage.py makemigrations 应用名 python manage.py migrate 应用名 这两个命名是生成迁移文件和迁移数据库
106 0
|
Shell 数据库 Python
【Django学习笔记 - 13】:关联查询(日期查询、一对一查询、一对多查询、多对多查询)
【Django学习笔记 - 13】:关联查询(日期查询、一对一查询、一对多查询、多对多查询)
479 0
【Django学习笔记 - 13】:关联查询(日期查询、一对一查询、一对多查询、多对多查询)
|
数据库 Python
Django的ManyToManyField(多对多)讲解
Django的ManyToManyField(多对多)讲解
328 0
Django的ManyToManyField(多对多)讲解