Django 模型类关系及相关操作
1.模型类关系
(1)一对多关系
如:图书类-英雄类
models.ForeignKey() #定义在多类
(2)多对多关系
如:新闻类-新闻类型类
models.ManyToManyField() #定义在哪个类都可以
(3)一对一关系
如:员工-员工详细信息
models.OneToOneField() #定义在哪个类都可以
2.关联查询 (一对多)
在一对多关系中,一对应的类我们把它叫做一类,多对应的那个类我们把它叫做多类,我们把多类中定义的建立关联的类属性叫做关联属性
(1)
b=BookInfo.objects.get(id=1)
b.heroinfo_set.all() #查询id为1的图书关联的英雄的信息
通过模型类查询:
HeroInfo.objects.filter(hbook__id=1)
(2)
h = HeroInfo.objects.get(id=1)
h.hbook #查询id为1的英雄关联的图书信息
通过模型类查询:
BookInfo.objects.filter(heroinfo__id=1)
(3)格式:
(4)通过模型类实现关联查询:
BookInfo.objects.filter(heroinfohcommentcontains='八') #查询图书要求关联的英雄描述包含八
BookInfo.objects.filter(heroinfoidgt=3) #查询图书要求关联的英雄id大于3
HeroInfo.objects.filter(hbook__btitle='天龙八部') #查询天龙八部所有英雄信息
(a)通过多类的条件查询一类的数据:
一类名.objects.filter(多类名小写多类属性名条件名)
(b)通过一类的条件查询多类的数据:
多类名.objects.filter(关联属性一类属性名条件名)
3.插入、更新和删除
(1)调用一个模型类对象的save方法实现对模型类对应数据表的插入和更新
(2)调用一个模型类对象的delete方法实现对模型类对应数据表的删除
4.自关联
自关联是一种特殊的一对多关系
案例:显示广州和它的上下级行政区
(1)在models.py建立自关联模型类
(2)迁移
(3)查看MySQL且插入数据,id与aparent_id关联
(4)在views.py写areas()函数
(5)在urls.py添加url
(6)写模板
5.管理器
BookInfo.objects.all()->objects是Django帮我自动生成的管理器对象,通过这个管理器可以实现对数据的查询。
objects是models.Manger类的一个对象。自定义管理器之后Django不再帮我们生成默认的objects管理器。
(1)自定义一个管理器类,这个类继承models.Manger类
super()表示父类,self.model获取所在的模型类
models.Manger自带方法create,要输入具体属性
(2)再在具体的模型类里定义一个自定义管理器类的对象
在BookInfo模型类里自定义管理器类的对象
自定义管理器类的应用场景:
(1)改变查询的结果集。
比如调用BookInfo.books.all()返回的是没有删除的图书的数据。
(2)添加额外的方法。
管理器类中定义一个方法帮我们操作模型类对应的数据库。
使用self.model()就可以创建一个跟自定义管理器对应的模型类对象。
小结:
6.元选项
Django默认生成的表名:
应用名小写 _ 模型类名小写
元选项:
需要在模型类中定义一个元类Meta,在里面定义一个类属性 db_table就可以指定表名。
在BookInfo模型类定义Meta类指定表名为bookinfo
- 浅谈Django中的数据库模型类-models.py(一对一的关系)
- 【Django】Django model与数据库操作对应关系(转)
- Django 速成笔记(3)--Django models 数据库操作-增删改查-多对多关系以及一对多(外键)关系
- django 多对多关系的操作 包含映射表
- Django基础篇之数据库选择及相关操作
- django数据库操作-增删改查-多对多关系以及一对多(外键)关系
- django中数据库的相关操作
- django models 操作数据库遇到相关问题 Cannot add foreign key constrain
- django数据库操作-增删改查-多对多关系以及一对多(外键)关系
- c++ Lib Dll及相关头文件关系和怎么操作
- Django入门教程(十三)数据库相关操作(增删改查、属性与常量、属性与属性、聚合)
- JAVA中的集合关系图和相关的操作
- django数据库操作-增删改查-多对多关系以及一对多(外键)关系
- Django -查询数据库相关操作
- Django中ORM模型总结(二)[模型类的对应关系,模型类的属性,字段类型]
- Django中的ORM操作——模型类数据查询
- iptables相关操作以及简单理解端口和服务之间关系
- django项目培训站-02-模型类的创建-数据表的增删查操作
- Django中的数据库模型类-models.py(一对一的关系)
- Django中的数据库模型类-models.py(一对多的关系)