博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
django bms
阅读量:7040 次
发布时间:2019-06-28

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

1.

创建模型

一对多:

需要在""多""的表创建一个""关键字段"" 关联  就像在mysql的哪项少的比如(书与出版社之间在书之间创建一个关联字段public_id 对应着出版社的主键) 

语法:在""多的"" 那边添加 

1     # 与Publish建立一对多的关系,外键字段建立在多的一方2     publish=models.ForeignKey(to="Publish",on_delete=models.CASCADE)3 #publish意味着publish_id 关联字段,无需添加id jdango自动添加4 #,on_delete=models.CASCADE 级联删除5 #to="Publish" 指向 少  的
一对多

 

多对多

在mysql中需要创建 一个共同的表,但是在django无需这样 

注意:

1 authors=models.ManyToManyField(to="Author")2 #这里注意  ManyToManyField在django生成的是一个表(记住了)3 book_author 表里面含有book_id author_id4 这里无需加级联删除,因为只有一个
多对多

 

一对一

同一对多,唯一区别是 ""关联字段"" 是惟一的 unique

1 ad=models.OneToOneField(to="AuthorDetail",on_delete=models.CASCADE)2 这里OneToOneField 在django默认省略 unique 生成字段
一对一

 

创建

查询

1 # 跨表查询,基于对象 2 from app01.models import Book,Publish,Author,AuthorDetail 3 # def books(request): 4     # 一对多添加 5     # 方式一 找出存储的出版社地址为条件,找到对象 然后将publish=找到的对象 6     # pub_obj=Publish.objects.filter(name="云南出版社").first() 7     # Book.objects.create(title="python",price="100",pub_date="2018-10-17",publish=pub_obj) 8     # 方式二 在对象里添加publish_id=对应的主键 9     # Book.objects.create(title="linux", price="100", pub_date="2018-10-17", publish_id=1)10     # return  HttpResponse("OK")11 #     多对多添加12 #     方式一 找到要把做作者加入书籍的书籍对象,然后在找到对应作者的主键(也就是找model对象),因为authors也是属性,13 #     通过 book.authors.add把作者加入14 #     book=Book.objects.filter(title="css").first()15     # alex=Author.objects.filter(name="alex").first()16     # egon=Author.objects.filter(name="egon").first()17     # 方式二 找到要把做作者加入书籍的书籍对象,然后通过book.authors.add() 加入对应的作者的主键数字18     # book.authors.add(1,2)19     # 方式三 当你取到的是一串列表的时候,需要一个个去,这里可以应用打散20     # book.authors.add(*[1, 2])21 22 23 24 25 26 ############查询27     # 一对多28     # 查询主键为1的书籍的出版社所在的城市29     # 正向查询 找到主键为一的对象 再通过对象的属性publish 找出30     # book_obj=Book.objects.filter(nid=1).first()31     # book_obj是主键为1的书籍对象关联的出版社对象32     # print(book_obj.publish.email)33     # 找到云南出版社出版的书34     # 反向查询35     # publish_obj=Publish.objects.filter(name="云南出版社")36     # print(publish_obj.book_set.all())37 38     # 多对多39     # 正向查询40     # book=Book.objects.filter(title="python").first()41     # ret=book.authors.all().values("age")42     # print(ret)43     # 反向查询44     # alex=Author.objects.filter(name="alex").first()45     # print(alex.book_set.all())46 47     # 一对一  找对象 没有反向48     # alex=Author.objects.filter(name="egon").first()49     # print(alex.ad.addr)50 51     # ad=AuthorDetail.objects.filter(tel=123).first()52     # print(ad.author.name)53 54     # 55     # return  HttpResponse("OK")
创建,查询

 

转载于:https://www.cnblogs.com/zhangqing979797/p/9852636.html

你可能感兴趣的文章
你知道吗?主导2015年的网页设计趋势
查看>>
FPS游戏服务器设计的问题 【转】
查看>>
分组配置
查看>>
Objective-C 内存管理之dealloc方法中变量释放处理
查看>>
无法加载协定为“JavaWebService.UserInfoDelegate”的终结点配置部分,因为找到了该协定的多个终结点配置。请按名称指示首选的终结点配置部分。...
查看>>
Java的递归算法
查看>>
JS魔法堂:元素克隆、剪切技术研究
查看>>
【转】每天一个linux命令(29):chgrp命令
查看>>
UVA10905: Children's Game(排序)
查看>>
jquery 仅仅读
查看>>
SkinSharp用法
查看>>
vc中关于 directx的配置,和dxsdk_extras(directshow)
查看>>
12个被滥用的Android应用程序权限
查看>>
15.02.13-代码小技巧
查看>>
【AC大牛陈鸿的ACM总结贴】【ID AekdyCoin】人家当初也一样是菜鸟
查看>>
php 用于绘图使用的颜色数组
查看>>
批处理命令 For循环命令具体解释!
查看>>
JSON扩展类——JsonHelper
查看>>
只有程序员了解的9个真相
查看>>
BDB (Berkeley DB)数据库简单介绍(转载)
查看>>