Как вернуть строковое выражение для 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) -> ??:
мои вопросы:
- что я должен написать внутри функции
compile_ob
? - что я должен вернуть в качестве типа?
Спасибо
На самом деле для этого не нужна функция. Вот пример:
SomeModel.objects.all().order_by(*order_by_query.split(","))
или вы можете вернуть список из функции compile_ob
и использовать его со звездообразным выражением.
def compile_ob(expression: str) -> list[str]:
return expression.split(",")