在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数据库里的数据一起删除掉了
三查询数据