django orm querset 多表查询

一对多 or 一对一前提条件:name = models.ForeignKey(Product, on_delete=models.CASCADE, related_name="ps")正向查询:data= Student.objects.get(id=1)data.product.title#查询关联表的数据的title反向查询1.没设置有related_namedata = Product.objects.get(id=1)v=data.student_set..
摘要由CSDN通过智能技术生成

一对多 or 一对一

 

前提条件:

name = models.ForeignKey(Product, on_delete=models.CASCADE, related_name="ps")

正向查询:

data= Student.objects.get(id=1)

data.product.title#查询关联表的数据的title

反向查询

1.没设置有related_name

data = Product.objects.get(id=1)

v=data.student_set.first()#Student模型小写_set

v.name

2.设置有related_name

data = Product.objects.get(id=1)

data.ps.first().name

此类正想查询和反向查询还可以用作条件查询

正向
In [38]: data = Vocation.objects.filter(id=1,name__name="Joe").first()#Vocation 外键.外键对象属性

In [40]: data.name
Out[40]: <Infos: Joe>

In [41]: data.name.name
Out[41]: 'Joe'

反向

p=Infos.objects.filter(ps__job="网站设计").first()

p.joe

此类有个缺点,就是要执行两次sql,第一次是查询某张数据表数据,第二次通过外键关联获取另一张数据表的信息

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值