Django-数据库多对多关系

时间:2022-04-08 08:28:24

Django 是 Python 编程语言驱动的一个开源模型-视图-控制器(MVC)风格的 Web 应用程序框架。使用 Django,我们在几分钟之内就可以创建高品质、易维护、数据库驱动的应用程序。接下来记录一下怎么在Django中使用数据库:

创建多对多关系

  • 方式一
from django.db import models

class Class5(models.Model):
name = models.CharField(max_length=32)

class Class3(models.Model):
name = models.CharField(max_length=32)

class Computer(models.Model):
c5 = models.ForeignKey("Class5")
c3 = models.ForeignKey("Class3")
  • 方式二
from django.db import models

class Class5(models.Model):
name = models.CharField(max_length=32)

class Class3(models.Model):
name = models.CharField(max_length=32)
c5 = models.ManyToManyField("Class5")

多对多关系增加数据

以方式二为例

from django.db import models

# 先获取Class3表数据
obj = models.Class3.objects.filter(name="xxxx").first()
# 添加关系,与Class5中id为1的关联
obj.c5.add(1)

# obj.c5.add(1,2,3) # 添加多个关系
# obj.c5.add(*[1,2,3]) # 添加多个关系

多对多关系查询数据

from django.db import models

# 先获取Class3表数据
obj = models.Class3.objects.filter(name="xxxx").first()
# 获取所有与当前数据关联的Class5数据
obj.c5.all()

多对多关系更新

from django.db import models

# 先获取Class3表数据
obj = models.Class3.objects.filter(name="xxxx").first()

# 更新数据
obj.set([1,2,3])

多对多关系删除

from django.db import models

# 先获取Class3表数据
obj = models.Class3.objects.filter(name="xxxx").first()

# 删除单条数据
obj.c5.remove(1)

# 删除多条数据
obj.c5.remove(1,2,3) # 或者:obj.c5.remove(*[1,2,3])

# 删除所有与当前数据关联的数据
obj.c5.clear()