我有一个函数findParent
,它接受一个字符串,将它与db
中的其他字符串进行比较,然后返回另一个字符串。我在.py文件中写了这个。
products=db(findParent(db.product_info.source_place)==auth.user.place).select()
问题是,db.product_info.source_place
没有从source_place
中删除db
,而是发送字符串本身,即findParent
收到db.product_info.source_place
但不是相应的值来自db
。
我做错了什么?
答案 0 :(得分:0)
在比较两个字段时,例如:
products=db(table1.field1==table2.field2).select()
在这两个字段上应用连接后返回一个表。
当您使用findParent(db.product_info.source_place)
时,findParent
只是考虑为字符串db.product_info.source_place
,因为实际上并没有为表中的所有行调用它并调用一次并进行计算,然后auth.user
的所有行{1}}与地点列的返回值进行比较。
添加解决方案:
行=分贝(db.product_info)。选择(db.product_info.source_place) listwantedsource = [] 对于行中的行: listwantedsource.append(findParent(row.source_place)) 产品=分贝(auth.user.place.belongs(listwantedsource))。选择()