管理中的django筛选器多选列表

管理中的django筛选器多选列表,django,django-admin,Django,Django Admin,我有一个django模型,具有自引用多对多字段,如下所示 class Product(ModelBase): name = models.CharField(max_length=1000) category = models.ForeignKey(Category, on_delete=models.DO_NOTHING) company = models.ForeignKey(Company, on_delete=models.DO_NOTHING) alt

我有一个django模型,具有自引用多对多字段,如下所示

 class Product(ModelBase):
    name = models.CharField(max_length=1000)
    category = models.ForeignKey(Category, on_delete=models.DO_NOTHING)
    company = models.ForeignKey(Company, on_delete=models.DO_NOTHING)
    alternatives = models.ManyToManyField('self', symmetrical=False, blank=True)
我对django管理表单不是特别满意,它将备选方案的选项列为多选列表框,因为对于大量的产品,选择一个或多个备选产品会变得单调乏味。 有没有一种方法可以丰富这种用户体验,我看过django高级过滤器,但它不适用于django 3。基本上,如果我可以有一个typeahead搜索来过滤列表中的项目,并根据选择的类别限制初始列表

----更新---- 管理员


感谢您的帮助。

ManyToManyField
的默认行为显示为

您需要做的是在
admin.py
中添加一行,使用该选项将
ManyToManyField
显示更改为水平显示

然后,它将显示在您的管理页面上,如下所示:

此示例可以在
添加表单上的
身份验证和授权
管理员上看到


你能分享你的
admin.py
文件吗?
@admin.register(Category)
class CategoryAdmin(admin.ModelAdmin):
    search_fields = ['name', ]


@admin.register(Company)
class CompanyAdmin(admin.ModelAdmin):
    search_fields = ['name', ]
    list_display = ['name', 'website', ]


@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    search_fields = ['name', ]
    list_filter = ['category', ]
    list_display = ['name', 'category', 'company', ]
from django.contrib import admin

@admin.register(Product)
class ProductAdmin(admin.ModelAdmin):
    search_fields = ['name', ]
    list_filter = ['category', ]
    list_display = ['name', 'category', 'company', ]
    filter_horizontal = ['alternatives', ]