我已成功设置自动完成注册表并拥有我的django管理员表单,如果您转到表单,则自动完成工作。我希望能够扩展自动填充功能,以便在list_filter视图上工作。因此,当您查看Admin.py生成的视图时 - 生成的list_filter输入也将使用自动完成jquery +服务URL。
我没有看到文档中列出的任何内容,任何人都有任何指示?
答案 0 :(得分:1)
您应该定义自己的管理过滤器,该过滤器继承自django.contrib.admin.SimpleListFilter
。然后应该为此过滤器提供您自己的HTML模板,该模板将使用django-autocomplete-light
小部件之一。作为小部件的参数,您应该定义所需的自动完成URL。并且不要忘记为它包含适当的JS和CSS。
所有这一切都在特殊的应用程序中完成:dal-admin-filters
答案 1 :(得分:1)
如果您使用的Django版本高于2.0,则可以尝试使用内置的autocomplete字段。
默认情况下,管理员对这些字段使用选择框界面()。有时,您不想承担选择所有相关实例以显示在下拉菜单中的开销。
Select2输入看起来与默认输入类似,但具有搜索功能,可以异步加载选项
有一个简单的app可以做到:
要安装,请使用:pip install django-admin-autocomplete-filter
然后将admin_auto_filters
添加到项目的settings.py中的INSTALLED_APPS
中。
假设我们有以下模型:
class Artist(models.Model):
name = models.CharField(max_length=128)
class Album(models.Model):
name = models.CharField(max_length=64)
artist = models.ForeignKey(Artist, on_delete=models.CASCADE)
cover = models.CharField(max_length=256, null=True, default=None)
您想根据歌手的身份在专辑管理中过滤结果,然后可以在歌手中定义搜索字段,然后将筛选器定义为:
from admin_auto_filters.filters import AutocompleteFilter
class ArtistFilter(AutocompleteFilter):
title = 'Artist' # display title
field_name = 'artist' # name of the foreign key field
class ArtistAdmin(admin.ModelAdmin):
search_fields = ['name'] # this is required for django's autocomplete functionality
...
class AlbumAdmin(admin.ModelAdmin):
list_filter = [ArtistFilter]
'''
defining this class is required for AutocompleteFilter
it's a bug and I am working on it.
'''
class Media:
pass
按照这些步骤操作后,您可能会看到过滤器为: