Пагинация в Django Admin с помощью пользовательских фильтров списков

У меня есть прокси-модель и секция администратора, где я реализую пользовательский фильтр мультиселекта. Результаты приходят правильно. Однако пагинация не работает с этим фильтром.

http://127.0.0.1:8000/users/?taggroup=1&taggroup=2

Когда я пытаюсь кликнуть на страницу 2, url превращается в :

http://127.0.0.1:8000/users/?page=2&taggroup=2

Но ожидаемый результат :

http://127.0.0.1:8000/users/?page=2&taggroup=1&taggroup=2

Я попробовал переопределить список изменений, используя [https://stackoverflow.com/questions/62960518/overriding-django-admin-pagination-along-with-url-parameters][1]

Но теперь пагинация выглядит следующим образом, когда я пытаюсь перейти со страницы 1 на страницу 2, а также пагинация начинается с 0, а не с 1:

 http://127.0.0.1:8000/users/?page=2&page=1 

Ниже приведен код, который я пробовал:

@register.inclusion_tag('admin/custom_pagination.html', takes_context=True)
def custom_pagination(context, cl):
    pagination = admin_list.pagination(cl)
    if 'group_id' in context:
        pagination['params'] = (('taggroup', context['group_id']),)
    return pagination

change_list_template = 'admin/users_changelist.html'

def changelist_view(self, request, extra_context=""):
        response = super(PartnerUsersAdmin, self).changelist_view(
            request, extra_context)
        group_id = request.GET.urlencode()
        if group_id:
            extra_context = {
                'group_id': str(group_id),
            }
            response.context_data.update(extra_context)
        return TemplateResponse(request, "admin/partner_users_changelist.html", response.context_data)

#custom_pagination.html

{% load admin_list %}
{% load i18n %}
{% load content_extras %}
<p class="paginator">
    {% if pagination_required %}
    {% for i in page_range %}
    <a href="?p={{ i }}{% for key, value in params %}{% if key != 'p' %}&{{ value }}{% endif %}{% endfor %}">
        {{i}}</a>
    {% endfor %}
    {% endif %}
    {{ cl.result_count }} {% if cl.result_count == 1 %}{{ cl.opts.verbose_name }}{% else %}
    {{ cl.opts.verbose_name_plural }}{% endif %}
    {% if show_all_url %}<a href="{{ show_all_url }}" class="showall">{% trans 'Show all' %}</a>{% endif %}
    {% if cl.formset and cl.result_count %}<input type="submit" name="_save" class="default" value="{% trans 'Save' %}">
    {% endif %}
</p>


#users_changelist.html

Добавлена следующая строка:

{% block pagination %}{% custom_pagination cl %}{% endblock %}
Вернуться на верх