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
相关产品推荐
相关产品推荐

