正文共:832字 1 图 预计阅读时间:3分钟
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))