Аннотация от регулярного выражения в условном выражении When()

Мне нужно слишком аннотировать результат поиска регулярных выражений в условном выражении When() с использованием параметра then, DB - Postgresql.

Например, вы можете использовать функцию SubStr() для получения подстроки поля, я хочу иметь возможность использовать регулярное выражение вместо позиционной подстроки.

Я думал о какой-то пользовательской функции, использующей REGEXP_MATCHES, но я не уверен, как бы я это сделал, или даже если это необходимо.

qs = SomeModel.objects.all()

pattern = r'regex'

qs = qs.annotate(
    match=Case(
        When(
            some_model_field__regex=pattern,
            then=Regex('some_model_field', pattern)
        ),
        output_field=CharField()
    )
)

Я хочу, чтобы аннотация была результатом сопоставления с образцом.

0 ответов

Другие вопросы по тегам