Я создал пользовательский класс SimpleListFilter
(код ниже) и сумел отобразить опции в качестве входных данных выбора. Что я хотел бы добавить, так это функциональность, которую предлагает Select2, а именно возможность поиска вариантов в пределах ввода select.
Может кто-нибудь сказать мне, как этого добиться?
Пользовательский класс SimpleListFilter :
class AnswerTreeKnowledgeCodeListFilter(admin.SimpleListFilter):
template = 'admin/dropdown_filter.html'
title = _('Kenniscode')
parameter_name = "knowledge_code"
def lookups(self, request, model_admin):
return [(instance.pk, str(instance)) for instance in AnswerTreeRepository.filter_by_level(0)]
def queryset(self, request, queryset):
# Custom queryset filtering here
dropdown_filter. html: (скопировано из источника, который я забыл, поэтому я не беру на себя ответственность за этот код)
{% load i18n %}
<script type="text/javascript">var go_from_select = function(opt) { window.location = window.location.pathname + opt };</script>
<h3>{% blocktrans with title as filter_title %} By {{ filter_title }} {% endblocktrans %}</h3>
<ul class="admin-filter-{{ title|cut:' ' }}">
{% if choices|slice:"4:" %}
<li>
<select class="form-control" style="width: 95%;margin-left: 2%;"
onchange="go_from_select(this.options[this.selectedIndex].value)">
{% for choice in choices %}
<option{% if choice.selected %} selected="selected"{% endif %}
value="{{ choice.query_string|iriencode }}">{{ choice.display }}</option>
{% endfor %}
</select>
</li>
{% else %}
{% for choice in choices %}
<li{% if choice.selected %} class="selected"{% endif %}>
<a href="{{ choice.query_string|iriencode }}">{{ choice.display }}</a></li>
{% endfor %}
{% endif %}
</ul>