sqlalchemy 获取模型属性问题
我的过滤条件是通过网址参数传过来的,比如: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,而是直接从类本身使用它。