Django由一查多

正文共:832字 1 图
预计阅读时间:3分钟

今日分享

小闫同学pythonnote.cn

查看:13154回复:541

Incredible change happens in your life when you decide to take control of what you do have power over instead of craving control over what you don't.

——  Steve Maraboli

Django 由一查多的各种方式。更多精彩文章请关注公众号『Pythonnote』或者『全栈技术精选』

BookInfo 是一, HeroInfo 是多( HeroInfo 定义了外键,对应 BookInfo

一、单个对象查询

一对应的模型类对象.多对应的模型类名小写_set

b = BookInfo.objects.get(id=1)

b.heroinfo_set.all()

二、多个对象同时查询

使用 values_list 方法实现 left join 效果。

一对应的模型类对象.objects.values_list(要查询的字段名, ...)

BookInfo.objects.valueslist('heroinfo__id', 'heroinfo__name')

由一查多时, values_list 中会有一个字段(该字段是多模型类对象小写名),根据此字段可以查询多对象。如果要查询多对象的某个属性,则用两个下划线链接 heroinfo__id

注意: 如果列出多个字段时, flat=True 属性不能使用,将多个字段同时列出即可。最后的查询结果是 Queryset 对象,可以通过工厂方法 list() 进行转换。转换后效果是列表套元祖,形如:更多精彩文章请关注公众号『Pythonnote』

[('34143124', '小闫同学'), ('4321443', '小闫同学'), ...]

如何将列表套元祖转换为列表套字段的形式

a = ('4321', '小闫') 

b = ('id', 'name') 

dict(zip(b, a))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值