Django `output_type` для конструкторов строк PostgreSQL

В рамках некоторого пользовательского кода пагинации на основе курсора я выражаю следующий SQL, который сравнивает конструкторы кортежей/строк

WHERE (col_a, col_b) > (%s, %s)
ORDER BY col_a, col_b

используя Django ORM, и конкретно используя Func с alias, аналогично этому ответу

from django.db.models import F, Func, TextField

col_a_col_b = Func(F('col_a'), F('col_b'), function='ROW', output_type=TextField())
col_a_col_b_from = Func(col_a_value, col_b_value, function='ROW')

filtered_queryset = queryset
    .alias(col_a_col_b=col_a_col_b)
    .filter(col_a_col_b__gt=col_a_col_b_from)
    .order_by('col_a', 'col_b')

Похоже, что для Func требуется output_type, иначе возникает исключение:

Expression contains mixed types. You must set output_field

Кажется немного странным использовать TextField для этого, но это работает, и я не вижу ничего лучше.

Есть ли более подходящий output_type для использования, или способ избежать необходимости устанавливать его?

Вернуться на верх