博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django 笔记7 多对多
阅读量:4921 次
发布时间:2019-06-11

本文共 2205 字,大约阅读时间需要 7 分钟。

多对多方法一 :双外键关联 自定义关系表 自定义class Host(models.Model):    nid = models.AutoField(primary_key=True)    hostname = models.CharField(max_length=32,db_index=True)    ip = models.GenericIPAddressField(protocol="ipv4",db_index=True)    port = models.IntegerField()    b = models.ForeignKey(to="Business", to_field='id',on_delete=models.CASCADE)classs Application(models.Model):    name = models.CharField(max_length=32)class HostToApp(models.Model):     hobj = models.ForeignKey(to='Host',to_field='nid',on_delete=models.CASCADE)     aobj = models.ForeignKey(to='Application',to_field='id',on_delete=models.CASCADE)     第三张表 往多对多加数据    HostToApp.objects.create(hobj_id=1,aobj_id=2)方法二:自动创建关系表  只能创建三列class Application(models.Model):    name = models.CharField(max_length=32)    r = models.ManyToManyField('Host')    无法直接对第三张表进行操作 通过r进行间接操作    obj = Application.objects.get(id=1)  选定了 Application id = 1    obj.name    增加    obj.r.add(2)在第三张表  application id=1   host id为2    obj.r.add(*[1,2,3,4])  application id = 1 host id=1 , 2 , 3, 4    删除    obj.r.remove(1)    obj.r.remove(2,4)    obj.r.remove(*[1,2,3])    清空    obj.r.clear() 删除有application id = 1的所有行    修改    obj.r.set([3,5,7]) 做完这个只保存这个关系  aid=1 hid=3 aid=1 hid=5    查找/获取    obj.r.all() 为host对象“列表” queryset    for host in obj.r.all():        print(host.name)    多选select        $.ajax({                    url: '/ajax_add_app',                    // data: {'user': 123,'host_list': [1,2,3,4]},                    data: $('#add_form').serialize(),  #将当前标签下的数据全部提交                    type: "POST",                    dataType: 'JSON', // 内部 自身转换                    traditional: true, //当需要发列表时,需添加这个                    success: function(obj){                        console.log(obj);                    },                    error: function () {                    }                })        // 如果发送到后台        //        /*        obj = models.Application.objects.get(id=ai)        obj.name = "新Name"        obj.save()        obj.r.set([1,2,3,4])        */position:fixed absolute relative作业:主机管理: 增加编辑删除应用管理: 增加编辑删除

 

转载于:https://www.cnblogs.com/Liang-jc/p/9192586.html

你可能感兴趣的文章
bzoj5192: [Usaco2018 Feb]New Barns
查看>>
结对-航空购票系统-结对项目总结
查看>>
GitHub创建项目,保存代码。
查看>>
sed 小结
查看>>
LeetCode #3 Longest Substring Without Repeating Characters (M)
查看>>
Python 乱码问题解决办法
查看>>
单例模式易错分析
查看>>
【BZOJ4827】【HNOI2017】礼物
查看>>
Struts2
查看>>
编写高质量代码改善C#程序的157个建议——建议63:避免“吃掉”异常
查看>>
MySQL性能调优与架构设计——第9章 MySQL数据库Schema设计的性能优化
查看>>
python 操作 excel
查看>>
XML解析之DOM ,SAX解析区别
查看>>
如何把一篇Word文档里的所有换行符去掉?
查看>>
改造vim
查看>>
C++编写Node.js插件(Addon)
查看>>
Excel-漏斗图分析(差异分析)
查看>>
ansible使用5-Variables
查看>>
SpringBoot2.0源码分析(二):整合ActiveMQ分析
查看>>
pickle 模块
查看>>