A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

11.2 通过模型类实现关联查询
例:查询图书信息,要求图书关联的英雄的描述包含'八'。
BookInfo.objects.filter(heroinfo__hcomment__contains='八')
例:查询图书信息,要求图书中的英雄的id大于3.
BookInfo.objects.filter(heroinfo__id__gt=3)
例:查询书名为“天龙八部”的所有英雄。
HeroInfo.objects.filter(hbook__btitle='天龙八部')
通过多类的条件查询一类的数据:
        一类名.objects.filter(多类名小写__多类属性名__条件名)
通过一类的条件查询多类的数据:
        多类名.objects.filter(关联属性__一类属性名__条件名)
1. 插入、更新和删除
调用一个模型类对象的save方法的时候就可以实现对模型类对应数据表的
插入和更新。
调用一个模型类对象的delete方法的时候就可以实现对模型类对应数据表数据的删除。
1. 自关联

自关联是一种特殊的一对多的关系。
案例:显示广州市的上级地区和下级地区。
地区表:id, atitle, aParent_id;
mysql终端中批量执行sql语句:source areas.sql;
1. 管理器
BookInfo.objects.all()->objects是一个什么东西呢?
答:objects是Django帮我自动生成的管理器对象,通过这个管理器可
以实现对数据的查询。
objects是models.Manger类的一个对象。自定义管理器之后Django不再帮我们生成默认的objects管理器。
1) 自定义一个管理器类,这个类继承models.Manger类。
2) 再在具体的模型类里定义一个自定义管理器类的对象。
自定义管理器类的应用场景:
1) 改变查询的结果集。
比如调用BookInfo.books.all()返回的是没有删除的图书的数据。
2) 添加额外的方法。
管理器类中定义一个方法帮我们操作模型类对应的数据表。
使用self.model()就可以创建一个跟自定义管理器对应的模型类对象。
小结:
1. 元选项
Django默认生成的表名:
        应用名小写_模型类名小写。
元选项:
需要在模型类中定义一个元类Meta,在里面定义一个类属性db_table就可以指定表名。


0 个回复

您需要登录后才可以回帖 登录 | 加入黑马