Аннотация от регулярного выражения в условном выражении When () - PullRequest
0 голосов
/ 25 января 2019

Мне нужно слишком аннотировать результат поиска регулярных выражений в условном выражении 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()
    )
)

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

...