#django #django-admin
Вопрос:
Я применил эту фильтрацию в своем администраторе. Но есть около 200 и гораздо более уникальных идентификаторов, которые отображаются справа.
Как я могу их ограничить? Есть ли лучший способ сделать это?
@admin.register(Model)
class Model(admin.ModelAdmin):
list_filter = ['my_unique_id']
Комментарии:
1. Не могли бы вы поделиться своей соответствующей моделью?
2. Возможно, вы захотите использовать
search_fields=['my_unique_id']
вместоlist_filter
этого .3. Это не дает мне список идентификаторов справа, я хочу что-то вроде разбиения на страницы в моем списке идентификаторов. Возможно ли это?
Ответ №1:
Если поле «my_unique_id» равно CharField, то вам следует использовать search_fields = [«my_unique_id»].
Если поле «my_unique_id» является внешним ключом, то вы можете использовать фильтр связанных полей и настроить шаблон.
Вы можете переопределить шаблон для выпадающего списка
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)]
Комментарии:
1. Но я все равно хочу увидеть список удостоверений личности с правой стороны. Я думал о том, чтобы, возможно, создать что-то вроде отдельной формы фильтрации
2. @Comrade49 Я отредактировал ответ. Вы можете настроить шаблон для выпадающего фильтра.