Я бы хотел отфильтровать поле JSONB, содержащее подстроку, используя SQLAlchemy.
Я знаю, что могу использовать функцию contains (), чтобы найти точно такой же ключ, но я хочу найти подстроку этого ключа. Как использование ilike () с текстовыми полями. Я хотел бы сделать это для обоих столбцов, получателя и параметров. Но если я получу помощь по одному, я выясню, как это сделать со вторым столбцом.
class NotificationMixin:
id = Column(Integer, primary_key=True)
recipient = Column(JSONB, nullable=False)
params = Column(JSONB, default={})
class EmailResource(AdminDataTableResource):
def _apply_filters(self, emails, filters):
for key in filters.items():
f_name = key[0]
f_val = key[1]
if len(f_val) > 0:
if f_name == 'recipient':
emails = emails.filter(Email.recipient.contains('"' + f_val + '"'))
if f_name == 'shipment_number':
emails = emails.filter(Email.params["shipment_number"].contains('"' + f_val + '"'))
Могу ли я использовать функцию has (), чтобы действовать как-то как ilike ()? Если нет, как я могу отфильтровать подстроку в моем случае? Есть идеи?