sqlalchemy 获取模型属性问题

1 投票
1 回答
758 浏览
提问于 2025-04-16 19:18

我的过滤条件是通过网址参数传过来的,比如:filterName = 'email',filterValue = 'john@',我需要根据这些条件来构建我的查询。

如果我尝试使用 rows.filter( getattr( self.model, filterName ).like( filterValue + '%' ) ),我会遇到一个错误:AttributeError: 'NoneType' object has no attribute 'like'

因为我的模型和过滤参数都是通过GET请求传来的,所以我必须想办法解决这个问题。你有什么建议吗?

1 个回答

0

你没有展示 self/self.model 在这里是什么。通常情况下,它应该是一个类的名字。

所以如果你有一个模型叫 User

field = 'id'
field_val = 3
qry = Session.query(User).filter(getattr(User, field) == field_val)

应该可以正常工作。

你不是从一个实例(self)中使用 getattr,而是直接从类本身使用它。

撰写回答