Как вернуть строковое выражение для order_by args в django queryset?

Допустим, я хочу сделать это в views проекте Django

order_by_query = request.query_params.get("order_by", "")
order_by_expression = compile_ob(order_by_query)
qs = SomeModel.objects.all().order_by(order_by_expression)

Я ожидаю, что order_by_query будет строкой типа field1,-field2

поэтому я напишу функцию типа

def compile_ob(expression: str) -> ??:

мои вопросы:

  1. что я должен написать внутри функции compile_ob?
  2. что я должен вернуть в качестве типа?

Спасибо

На самом деле для этого не нужна функция. Вот пример:

SomeModel.objects.all().order_by(*order_by_query.split(","))

или вы можете вернуть список из функции compile_ob и использовать его со звездообразным выражением.

def compile_ob(expression: str) -> list[str]:
    return expression.split(",")
Вернуться на верх