Как я могу передать несколько пользовательских полей для order_by () в Django? - PullRequest
2 голосов
/ 22 августа 2011

Добрый день,

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

Например (обувь):

ordering_string = "size,-price"

Я записываю эту строку в свою базу данных, чтобы пользователям больше не нужно было заново устанавливать эти значения.

Теперь, как мне передать эти аргументы в формате, подобном ...

shoes = ShoesModel.objects.some_kind_of_filter.order_by('size', '-price')

Да, я могу разбить строку на ',' и затем создать кортеж значений, но order_by требует *field_names (не кортеж).

1 Ответ

2 голосов
/ 22 августа 2011

Питон спиной здесь. Если вы хотите передать все элементы в кортеже функции в качестве аргументов, вы можете передать кортеж в функцию со звездочкой * перед ней, например:

shoes = ShoesModel.objects.some_kind_of_filter.order_by(*('size', '-price'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...