Django由一查多
正文共:832字 1 圖
預(yù)計閱讀時間:3分鐘
——??Steve Maraboli
Django?由一查多的各種方式。更多精彩文章請關(guān)注公眾號『Pythonnote』或者『全棧技術(shù)精選』
BookInfo?是一,?HeroInfo?是多(?HeroInfo?定義了外鍵,對應(yīng)?BookInfo)
一、單個對象查詢
一對應(yīng)的模型類對象.多對應(yīng)的模型類名小寫_set
b = BookInfo.objects.get(id=1)
b.heroinfo_set.all()
二、多個對象同時查詢
使用?values_list?方法實現(xiàn)?left join?效果。
一對應(yīng)的模型類對象.objects.values_list(要查詢的字段名, ...)
BookInfo.objects.valueslist('heroinfo__id', 'heroinfo__name')
由一查多時,?
values_list?中會有一個字段(該字段是多模型類對象小寫名),根據(jù)此字段可以查詢多對象。如果要查詢多對象的某個屬性,則用兩個下劃線鏈接?heroinfo__id
注意:?如果列出多個字段時,?flat=True?屬性不能使用,將多個字段同時列出即可。最后的查詢結(jié)果是?Queryset?對象,可以通過工廠方法?list()?進行轉(zhuǎn)換。轉(zhuǎn)換后效果是列表套元祖,形如:更多精彩文章請關(guān)注公眾號『Pythonnote』
[('34143124', '小閆同學(xué)'), ('4321443', '小閆同學(xué)'), ...]
如何將列表套元祖轉(zhuǎn)換為列表套字段的形式
a = ('4321', '小閆')?
b = ('id', 'name')?
dict(zip(b, a))

