Django 应用程序的一个简单扩展,用于在 django 管理面板中将过滤器呈现为自动完成小部件。
项目描述
django_select2_admin_filters
这个扩展基于django-select2并且可以使用或不使用 Grappelli。
安装
-
使用 pip 安装
pip install django-select2-admin-filters -
更新 INSTALLED_APPS,您还需要在 admin 和 django_select2 之后放置 django_select2_admin_filters
INSTALLED_APPS = [ 'django.contrib.admin', # 'django_select2', 'django_select2_admin_filters', ]
-
更新 urls.py 以使用模型过滤器(参考django-select2 文档)
path('select2/', include('django_select2.urls')),
过滤器
过滤器通常有两种类型,但它们中的每一种都可以单选或多选:
- 选择过滤器
- 选择Select2Filter
- MultipleChoiceSelect2Filter
- 模型过滤器
- 模型选择2过滤器
- MultipleModelSelect2Filter
用法
- 在 admin.py 中使用过滤器
from django.contrib import admin from django_select2_admin_filters.admin import ( Select2AdminFilterMixin) from django_select2_admin_filters.filters import ( ChoiceSelect2Filter, MultipleChoiceSelect2Filter, ModelSelect2Filter, MultipleModelSelect2Filter) from your_app.models import Country, Person, Profession class CountryFilter(ModelSelect2Filter): title = 'Country of residence' # filter's title parameter_name = 'country' # parameter used in url and by default field name of Foreign Key used to filter results autocomplete_queryset = Country.objects.all() # queryset to autocomplete search_fields = ['name__icontains'] # fields of Country model used to filtering # optionally you can override queryset method def queryset(self, request, queryset): val = self.value() if val: return queryset.filter(country_of_residence=val) return queryset class ProfessionFilter(MultipleModelSelect2Filter): title = 'Profession' parameter_name = 'profession' autocomplete_queryset = Profession.objects.all() search_fields = ['name__icontains'] def queryset(self, request, queryset): val = self.value_as_list() if len(val) > 0: return queryset.filter(professions__profession_id__in=val) return queryset class StatusFilter(ChoiceSelect2Filter): title = 'Status' parameter_name = 'status' autocomplete_choice_list = [ # list of choices (1, 'Active',), (2, 'Suspended',), (3, 'Deleted',), ] @admin.register(Person) class PersonAdmin(Select2AdminFilterMixin, admin.ModelAdmin): # change_list_template = 'admin/change_list_filter_sidebar.html' <- DON'T override change_list_template list_filter = (CountryFilter, ProfessionFilter, StatusFilter,) # actually you cannot mix filters with traditional filters
去做
- 添加测试
- 添加处理
dependent_fields
作者
项目详情
关
django_select2_admin_filters-0.1.4-py2-none-any.whl 的哈希 值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 4bda23817854d78554deb1f473ebf143247b98cd27ebf4623e24a1cea8c8c6ef |
|
| MD5 | ba531786fc9016c7e09dbbe9338f1d4c |
|
| 布莱克2-256 | a78b441b4f61530dc56321ad0eb04971d06c47fbeccf164bb1765036059d6173 |