模型类关系 1) 一对多关系 例:图书类-英雄类 models.ForeignKey() 定义在多的类中。 2) 多对多关系 例:新闻类-新闻类型类 体育新闻 国际 models.ManyToManyField() 定义在哪个类中都可以。 3) 一对一关系 例:员工基本信息类-员工详细信息类. 员工工号 models.OneToOneField定义在哪个类中都可以。 关联查询(一对多)在一对多关系中,一对应的类我们把它叫做一类,多对应的那个类我们把它 叫做多类,我们把多类中定义的建立关联的类属性叫做关联属性。 例:查询图书id为1的所有英雄的信息。 book = BookInfo.objects.get(id=1) book.heroinfo_set.all() 通过模型类查询: HeroInfo.objects.filter(hbook_id=1) 例:查询id为1的英雄所属图书信息。 hero =HeroInfo.objects.get(id=1) hero.hbook 通过模型类查询: BookInfo.objects.filter(heroinfo__id=1) 格式: 由一类的对象查询多类的时候: 一类的对象.多类名小写_set.all() #查询所用数据 由多类的对象查询一类的时候: 多类的对象.关联属性 #查询多类的对象对应的一类的对象 由多类的对象查询一类对象的id时候: 多类的对象. 关联属性_id 通过模型类实现关联查询: 例:查询图书信息,要求图书中英雄的描述包含'八'。 BookInfo.objects.filter(heroinfo__hcomment__contains='八') 例:查询图书信息,要求图书中的英雄的id大于3. BookInfo.objects.filter(heroinfo__id__gt=3) 例:查询书名为“天龙八部”的所有英雄。 HeroInfo.objects.filter(hbook__btitle='天龙八部') 通过多类的条件查询一类的数据: 一类名.objects.filter(多类名小写__多类属性名__条件名) 通过一类的条件查询多类的数据: 多类名.objects.filter(关联属性__一类属性名__条件名) 插入、更新和删除调用一个模型类对象的save方法的时候就可以实现对模型类对应数据表的插入和更新。 调用一个模型类对象的delete方法的时候就可以实现对模型类对应数据表数据的删除。
|