正文共: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))