python-3.x - 皮威。如何选择所有带有预取字段的外键字段的模型项?
问题描述
我有 3 个模型。
from peewee import (
PostgresqlDatabase,
Model,
CharField,
ForeignKeyField,
prefetch,
JOIN_LEFT_OUTER
)
db = PostgresqlDatabase("***", user='***', password='***')
class Model1(Model):
name = CharField()
class Meta:
database = db
class Model2(Model):
name = CharField()
model1 = ForeignKeyField(Model1)
class Meta:
database = db
class Model3(Model):
name = CharField()
model1 = ForeignKeyField(Model1)
class Meta:
database = db
def main():
model1_prefetched = prefetch(Model1.select(Model1), Model3.select(Model3)).select()
query = Model2.select(Model2.name, model1_prefetched.c.model1, model1_prefetched.c.model3).join(model1_prefetched, join_type=JOIN_LEFT_OUTER, on=(Model2.model1_id==model1_prefetched.c.id))
model2_objects = list(query.execute())
if __name__ == '__main__':
main()
我想从Model2中选择与Model1连接的所有数据,并将所有Model3-objects预取到每个Model1-object。我不明白我该怎么做。
我究竟做错了什么?
谢谢你。
解决方案
query = Model2.select()
prefetch(query, Model1, Model3)
model3_list = list(query.execute())
推荐阅读
- amazon-web-services - 如何从 Node.js Lambda 函数调用 step 函数?
- reactjs - TypeError: allentry.map 不是函数
- powershell - 输出文件无法正常工作
- android - 如何使用 android studio 在 REST API 结果中获取嵌套元素?
- python - 如何使用python删除json文件中的特定字段
- angularjs - 有没有办法在 Angular Js 自定义指令中添加“uib-tooltip-html”作为属性?
- babylonjs - bayblonjs:babylon.js 中是否有方法/函数可以找到最短(最佳)路径
- android - 如何在 Android 11 中创建目录
- angular - 自定义 Angular 库在 Web 应用程序中引发 NullInjector 错误
- python - 交叉验证错误 DataConversionWarning:当需要一维数组时,传递了列向量 y