You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python中使用Peewee查询时访问ForeignKeyField属性的方法

正确查询关联ModelA、ModelB且过滤ModelC特定ID的方法

你的代码无法运行的核心问题是把赋值运算符=当成了比较运算符==,这是Python基础语法错误。结合Peewee的外键查询特性,以下是修正后的正确写法:

方式一:简洁的外键比较(推荐)

直接用ModelA的外键字段c和特定ID比较即可,Peewee会自动解析为关联ModelC的主键匹配:

specific_c_id = 1  # 替换为你的目标ID值
sample = ModelA.select(ModelA, ModelB) \
    .join(ModelB, on=ModelA.b) \
    .where(ModelA.c == specific_c_id)

方式二:显式指定主键字段

如果习惯明确写出主键字段,也可以这样写,效果和上面完全一致:

specific_c_id = 1
sample = ModelA.select(ModelA, ModelB) \
    .join(ModelB, on=ModelA.b) \
    .where(ModelA.c.id == specific_c_id)

补充说明

  • 当前场景不需要使用别名,因为ModelA的c字段明确指向ModelC,不存在歧义。只有当同一个模型中存在多个指向同一张表的外键时,才需要用别名区分。
  • 查询执行后,可通过遍历sample获取结果,比如for item in sample: print(item.extra, item.b.extra),直接访问ModelA和关联ModelB的字段。

内容的提问来源于stack exchange,提问作者runborgian

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 23:34:58