分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 前端开发

Django-website 程序案例系列-7 创建多对多关系表

发布时间:2023-09-06 01:26责任编辑:董明明关键词:暂无标签

创建多对多关系表:

方式一:一共三张表其中有一张中间表需要手工建立(建议使用第一种方式自定制程度高)

class Host(models.Model): ???hostname = models.CharField(max_length=32, db_index=True) ???ip = models.GenericIPAddressField(db_index=True,protocol="ipv4") ???port = models.IntegerField() ???b = models.ForeignKey(‘Business‘, to_field=‘id‘) ?class Application(models.Model): ???name = models.CharField(max_length=32)class HostToApp(models.Model): ???????#多对多关系的中间表 ???hobj = models.ForeignKey(to=‘Host‘, to_field=‘id‘) ???aobj = models.ForeignKey(to=‘Application‘, to_field=‘id‘)

  

方式二:一共两张表没有中间表,中间表又django自动生成(默认只能生成3列数据,如果需要更多数据就需要使用方式一来建立多对多关系)

class Host(models.Model): ???hostname = models.CharField(max_length=32, db_index=True) ???ip = models.GenericIPAddressField(db_index=True,protocol="ipv4") ???port = models.IntegerField() ???b = models.ForeignKey(‘Business‘, to_field=‘id‘) ?class Application(models.Model): ???name = models.CharField(max_length=32) ???r = models.ManyToManyField("Host") ??#建立多对多的关系,django自动生成中间表

#操作第三章表
obj = Application.objects.get(id=1)
obj.r.add(1) ???????????#增加第三张表的关系
obj.r.add(2,3)
obj.r.add(*[1,2,3,4])

obj.r.remove(1)      #删除
obj.r.remove(2,3)
obj.r.remove(*[1,2,3])
  
obj.r.clear()        #清空
obj.r.set([3,5,7])     ?#修改
obj.r.all() ????#获取所有相关host对象列表(QuerySet)

  

Django-website 程序案例系列-7 创建多对多关系表

原文地址:http://www.cnblogs.com/kuku0223/p/7880601.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved