Django模型进阶-多对多关系

        在Django中,多对多(Many-to-Many)关系是一种数据库关系,表示一个模型的实例可以与另一个模型的多个实例相关联,同时另一个模型的实例也可以与这个模型的多个实例相关联。换句话说,就是两个模型之间可以存在多重关联,每个实例都可以属于多个相关实例的集合。

        实现多对多关系时,Django会在数据库中自动创建一个中间表(也称为连接表或关联表),这个中间表至少包含两个字段,这两个字段都是外键,分别指向参与多对多关系的两个模型。这个中间表用于存储两个模型实例之间的关联关系,而不需要你显式地定义这个表。

创建一个新的APP

django-admin startapp Many2Many

并在settings里去注册一下

设计一下多对多的模型

执行迁移

python3 manage.py makemigrations
python3 manage.py migrate 

执行迁移以后我们看到数据库里生成了3张表,但我们在models里就设计了2张表 中间表是自动创建的

 一增加数据

执行后我们可以看到modeldb1.Many2Many_user_movie成功添加了一条数据

另一种方法 反向查询引用

执行后我们可以看到数据也被成功添加

 二删除数据

在删除数据中如果是删除单表内的数据就先查到到数据 然后执行删除

#删除User

# User.objects.filter(name="张三10").delete()

#删除Movie

# Moive.objects.filter(name="无间道10").delete()

如果要删除中间件的数据,要注意的是这里不能直接用.delete()

不然会把Movie数据库里的数据一起删除掉了 

三查询数据

 

相关推荐

  1. hyperf 关联模型

    2024-05-14 12:16:07       32 阅读
  2. DjangoManyToManyField字段

    2024-05-14 12:16:07       54 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-14 12:16:07       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-14 12:16:07       100 阅读
  3. 在Django里面运行非项目文件

    2024-05-14 12:16:07       82 阅读
  4. Python语言-面向对象

    2024-05-14 12:16:07       91 阅读

热门阅读

  1. Django高级表单处理与验证实战

    2024-05-14 12:16:07       26 阅读
  2. Redis——缓存的三种设计模式

    2024-05-14 12:16:07       27 阅读
  3. 机器学习【如何学习】

    2024-05-14 12:16:07       30 阅读
  4. leetcode14 最长公共前缀-纵向比较

    2024-05-14 12:16:07       27 阅读
  5. vue router

    2024-05-14 12:16:07       24 阅读