django自动完成django管理的滤光器
dal-admin-filters的Python项目详细描述
django自动完成django管理员的滤光器。
default select2 widget
以筛选器标题作为占位符的小部件
要求
这是django autocomplete light的扩展,因此需要安装 也可以配置它。
例如,下面是最小设置。
有关详细信息,请参阅http://django-autocomplete-light.readthedocs.io/ 详细说明。
安装
使用pip安装
pip install django-autocomplete-light dal_admin_filters
更新已安装的应用程序。您还需要在管理之前加上django autocomplete灯
INSTALLED_APPS=['dal','dal_select2','dal_admin_filters',#'django.contrib.admin',...otherstuffthere...]
配置
创建自动完成视图
让我们的模型看起来像这样
classCountry(models.Model):name=models.CharField(max_length=100,unique=True)def__str__(self):returnself.nameclassPerson(models.Model):name=models.CharField(max_length=100,unique=True)from_country=models.ForeignKey(Country)def__str__(self):returnself.name
然后,国家/地区选择的“自动完成”视图将类似于“下一步”
fromdalimportautocompletefromyour_countries_app.modelsimportCountryclassCountryAutocomplete(autocomplete.Select2QuerySetView):defget_queryset(self):# Don't forget to filter out results depending on the visitor !ifnotself.request.user.is_authenticated():returnCountry.objects.none()qs=Country.objects.all()ifself.q:qs=qs.filter(name__istartswith=self.q)returnqs
在url.py中注册视图
fromyour_countries_app.viewsimportCountryAutocompleteurlpatterns=[url(r'^country-autocomplete/$',CountryAutocomplete.as_view(),name='country-autocomplete',),url(r'^admin/',admin.site.urls),]
在admin.py中使用filter
fromdjango.contribimportadminfromyour_countries_app.modelsimportCountry,Personfromdal_admin_filtersimportAutocompleteFilter@admin.register(Country)classCountryAdmin(admin.ModelAdmin):passclassCountryFilter(AutocompleteFilter):title='Country from'# filter's titlefield_name='from_country'# field name - ForeignKey to Country modelautocomplete_url='country-autocomplete'# url name of Country autocomplete viewclassCountryPlaceholderFilter(AutocompleteFilter):title='Country from'# filter's titlefield_name='from_country'# field name - ForeignKey to Country modelautocomplete_url='country-autocomplete'# url name of Country autocomplete viewis_placeholder_title=True# filter title will be shown as placeholderclassCountryCustomPlaceholderFilter(AutocompleteFilter):title='Country from'# filter's titleparameter_name='from_country'# field name - ForeignKey to Country modelautocomplete_url='country-autocomplete'# url name of Country autocomplete viewwidget_attrs={'data-placeholder':'Filter by country name'}@admin.register(Person)classPersonAdmin(admin.ModelAdmin):classMedia:# Empty media class is required if you are using autocomplete filterpass# If you know better solution for altering admin.media from filter instance# - please contact me or make a pull requestlist_filter=[CountryFilter]
如果设置正确,您将在管理过滤器中看到select2小部件 在个人的变更列表视图中。