Django的多对多实现删除和修改
一.生成多对多的数据库
在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
当我们要实现删除和修改功能的时候要传一个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({})