Django Python urlencode одного и того же ключа с несколькими значениями

Как следует из названия, я пытаюсь выполнить urlencode с помощью Ordered Dict в python

def url_replace(request, field, value, direction=""):
    dict_ = request.GET.copy()
    if field == "order_by" and field in dict_.keys():
        if dict_[field].startswith("-") and dict_[field].lstrip("-") == value:
            dict_[field] = value
        elif dict_[field].lstrip("-") == value:
            dict_[field] = "-" + value
        else:
            dict_[field] = direction + value
    else:
        dict_[field] = direction + str(value)

    print("UNORDERED___________________")
    print(dict_)
    print(super(MultiValueDict, dict_).items())
    print("ORDERED_____________")
    print(OrderedDict(super(MultiValueDict, dict_).items()))
    print(OrderedDict(dict_.items()))
    return urlencode(OrderedDict(dict_.items()))

Вывод для приведенного выше кода

UNORDERED___________________
<QueryDict: {'assigned_to_id': ['1', '2'], 'client_id': ['2', '1'], 'page': ['2']}>
dict_items([('assigned_to_id', ['1', '2']), ('client_id', ['2', '1']), ('page', ['2'])])
OrderedDict([('assigned_to_id', '2'), ('client_id', '1'), ('page', '2')])
ORDERED_____________
OrderedDict([('assigned_to_id', ['1', '2']), ('client_id', ['2', '1']), ('page', ['2'])])
OrderedDict([('assigned_to_id', '2'), ('client_id', '1'), ('page', '2')])

Как вы видите, assigned_to_id имеет только 2 в конце .

Что я ожидаю, так это упорядоченный дикт с

OrderedDict([('assigned_to_id', '2'),('assigned_to_id', '1'), ('client_id', '1'), ('client_id', '2'),('page', '2')])

Возможно, есть лучший подход для этого, я немного новичок в python

Моя конечная цель - вернуть dict с несколькими ключами или что-нибудь, что можно использовать в urlencode

urllib.parse.urlencode

Когда в качестве аргумента запроса используется последовательность двухэлементных кортежей, первый элемент каждого кортежа является ключом, а второй - значением. Элемент значения сам по себе может быть последовательностью, и в этом случае, если необязательный параметр doseq имеет значение True, для каждого элемента последовательности значений для ключа генерируются отдельные пары ключ=значение, разделенные символом '&'. Порядок параметров в кодированной строке будет соответствовать порядку кортежей параметров в последовательности.

Вот простой пример:

from urllib import parse

print(parse.urlencode({"a": [1, 2], "b": 1}, doseq=True))
# "a=1&a=2&b=1"
Вернуться на верх