Как улучшить фильтрацию в админке django?
У меня в админке применена эта фильтрация. Но есть около 200 и гораздо больше уникальных id, которые отображаются справа.
Как я могу их ограничить? Есть ли лучший способ сделать это?
@admin.register(Model)
class Model(admin.ModelAdmin):
list_filter = ['my_unique_id']
Если поле 'my_unique_id' является CharField, то следует использовать search_fields = ['my_unique_id'].
Если поле 'my_unique_id' является ForeignKey, то вы можете использовать RelatedFieldListFilter и настроить шаблон.
Вы можете переопределить шаблон для выпадающего списка
related_dropdown_filter.html
{% load i18n %}
<script type="text/javascript">var go_from_select = function(opt) { window.location = window.location.pathname + opt };</script>
<div class="dropDown-filter">
<h3>{% blocktrans with title as filter_title %} By {{ filter_title }} {% endblocktrans %}</h3>
<ul class="admin-filter-{{ title|cut:' ' }}">
{% if choices|slice:"1:" %}
<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>
</div>
from django.contrib.admin.filters import RelatedFieldListFilter
class RelatedDropdownFilter(RelatedFieldListFilter):
template = 'related_dropdown_filter.html'
@admin.register(Model)
class Model(admin.ModelAdmin):
list_filter = [('my_unique_id', RelatedDropdownFilter)]