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

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


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