Django的多对多实现添加
生成多对多的数据库
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
class Usertable(View):
def post(self, request):
data = json.loads(request.body)
user = User.objects.create(username=data["username"], mobile=data["mobile"], email=data["email"], status=1)
# print(data["role"]) # 这是一个列表类型[2, 1]
user.role.set(data['role']) # 向角色和用户的关联表添加数据,用set方法
return JsonResponse({}) # 不是字典类型必须写safe=False