В настоящее время вы не можете использовать фильтры с или.Когда-нибудь мы реализуем это.
Я могу дать вам некоторый обходной путь со строками.
В Pony вы можете использовать строковые версии генераторов или фильтров.Например,
select('w for w in Widget')
. Это может быть полезно, если вы используете какое-то выражение, которое Пони не может декомпилировать.Например,
select('s for s in Student if a < s.age < b')
Так что в вашем случае вы можете сделать это как
q = select(w for w in Widget)
q = q.filter(' or '.join('keywords[%d] in w.name' % i for i in range(len(keywords))))
Я использую for i in range
, а не for kw in keywords
, чтобы избежать инъекций Python, потому что этот код будет оценен.