繁体   English   中英

PeeWee:忽略外键约束

[英]PeeWee: Ignores foreign key constraint

Job.select().where(Job.user == current_user.id and Job.status == "Running")

不断从错误的用户返回错误的行。 似乎完全忽略了语句Job.user == current_user.id

我也试过

Job.select().join(User).where(Job.status == "Running")

同样,它不会返回属于当前用户的正确Job。

这里的问题是, and没有转化为SQL AND

实际上,它在任何库中都无法做到这一点。 and运算符不能重载,如果第一个不正确,它将短路(不评估第二个参数),并且它始终返回所评估的最后一个东西。

因此,由于Job.user == current_user.id返回一个非空查询对象,这是事实, Job.user == current_user.id and Job.status == "Running"返回Job.status == "Running" 这就是为什么它忽略了current_user.id

文档所述,使用&运算符或bin_and方法。

另外,请记住, &的优先级与and优先级不同,因此在每次比较时都需要加括号。


对于您的第二次尝试,该join工作正常-只是意味着Job中的每一行都与User相应行中的列相连。 您甚至都没有试图告诉它要限制它的用户,并且它无法读懂您的想法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM