09-Django模型类关系

一对多

hbook=models.ForeignKey(‘BookInfo’)
需要定义在多类中

多对多

models.ManyToManyField()
定义在那个类中都可以

一对一

models.OneToOneField()
定义在那个类中都可以

一对多的关联查询

在一对多关系中,一对应关系我们叫做一类,多对应关系我们叫做多类,把多类定义中的建立关联的类属性叫做关联属性

查询图书id为1的所有人物的信息
book=BookInfo.objects.get(id=1)
book.heroinfo_set.all()
也可以这样
HeroInfo.objects.fliter(hbook__id=1)

通过模型类实现关联查询

BookInfo.objects.fliter(heroinfo_hcomment_comstains=“爸”)
查询图书关联的英雄的描述包含爸的

BookInfo.objects.fliter(heroinfo_id_gt=3)
查询图书信息,要求图书的英雄的id大于3

heroInfo.objects.fliter(bookinfo_btitle=“天龙八部”)这是错误的写法
因为在HeroInfo里面我们已经有关联的属性叫做hbook
heroInfo.objects.fliter(hbook_btitle=“天龙八部”)
查询书名为天龙八部的所有英雄,所有的下划线都是双下划线

插入更新删除

调用对象的save方法就能插入和更新

调用对象的delete方法就能删除

自关联

自关联是是一种特殊的一对多关系
比如一个省表一个市表一个县表,可以糅合成一张表,三个字段,id,地名,父级id,这就是自关联。

class AreaInfo(models.Model):
    '''地区模型类'''
    atitle = models.CharField(max_length=20)  # 地区名称
    aparent = models.ForeignKey('self',null=True,blank=True)  # 关系属性,代表当前地区的父级,默认可以没有父级

批量执行sql语句时:
source xxx.sql

获取 广州市信息:
area=AreaInfo.objetcs.get(atitle=‘广州市’)
查询广州市的上级地区
parent=area.aParent
查询广州市的下级地区
children=area.areinfo_set.all()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值