我目前正在使用Flask& Peewee。 Imho是一个很好的组合,但现在我来到了一个小便似乎“弱”的地步。为我的项目。可能是我,以错误的方式思考某事:)
以下代码很好地描述了我的问题。
# dynamic data from somewhere outside my application
# (does not really matter from where)
# how data really look like
dynamicInput = [(fieldname1 == 'abc'),(fieldname2 == 'def')]
# how data should look like (in a dynamic way)
dynamicInput = [(databasetable.fieldname1 == 'abc'), (databasetable.fieldname2 == 'def')]
# query database with peewee query
model = self.action_meta.model_clothing.select().where(dynamicInput).get()
由于缺少数据表表引用,where子句无法使用 查询有用的结果。通过数据库表引用,我的意思是像 databasetable .fieldname。
所以问题是我如何在简单的dict / list(键值对)的基础上动态创建一个有效的where子句。
答案 0 :(得分:1)
只需使用DatabaseTable._meta.fields [field_name]或getattr(DatabaseTable,field_name)即可获取字段对象。您可以通过将字段对象与运算符和值组合来动态构造表达式。