Это может не отвечать на 100% вашего вопроса, но метод, который я использую для многозначных параметров в URL, состоит в том, чтобы передать их в виде непрозрачного большого двоичного объекта в представление и позволить этому выполнить декодирование.
# URLConf
(r'^foo/(?P<ids>([0-9]+,?)+)/)$', foo),
# View
def foo(request, ids):
ids=ids.split(',')
# Reverse call
reverse(foo, ','.join(sorted(ids)))
Вызов sorted()
гарантирует, что эквивалентные списки идентификаторов производят идентичные URL (при условии, что порядок ids
не имеет значения). Вы также можете сделать ids
a set
, если не хотите дублировать значения.