【发布时间】:2021-11-02 09:20:21
【问题描述】:
在您将此标记为重复之前,我已阅读this question 的解决方案。
在 Django Admin 中,我有很多价值观。处理该数据的团队目前可以使用 CTRL+F 至少找到所需的字段。
为了修复 UI,我在上面标记的问题的解决方案中提供了下拉渲染选项。但是,正如我所说,我需要它是可搜索的。
【问题讨论】:
在您将此标记为重复之前,我已阅读this question 的解决方案。
在 Django Admin 中,我有很多价值观。处理该数据的团队目前可以使用 CTRL+F 至少找到所需的字段。
为了修复 UI,我在上面标记的问题的解决方案中提供了下拉渲染选项。但是,正如我所说,我需要它是可搜索的。
【问题讨论】:
几周前我也在为同样的问题苦苦挣扎。所以这个答案可能对未来的一些开发人员有用。
我设法通过编写自定义 template.html
解决了这个问题
我已经将代码捆绑在一个很棒的包中,现在它对你也一样,here's the link。
1.安装:
pip install django-admin-searchable-dropdown
此命令将在您的项目中安装最新版本的软件包。
现在,通过将 admin_searchable_dropdown 添加到 INSTALLED_APPS 内的 settings.py 文件中,将包包含在您的项目中。
2。用法:
假设您有以下模型:
from django.db import models
class CarCompany(models.Model):
name = models.CharField(max_length=128)
class CarModel(models.Model):
name = models.CharField(max_length=64)
company = models.ForeignKey(CarCompany, on_delete=models.CASCADE)
并且您想在company 的基础上过滤CarModelAdmin 中的结果。您需要在CarCompany 中定义search_fields,然后像这样定义过滤器:
from django.contrib import admin
from admin_searchable_dropdown.filters import AutocompleteFilter
class CarCompanyFilter(AutocompleteFilter):
title = 'Company' # display title
field_name = 'company' # name of the foreign key field
class CarCompanyAdmin(admin.ModelAdmin):
search_fields = ['name'] # this is required for django's autocomplete functionality
# ...
class CarModelAdmin(admin.ModelAdmin):
list_filter = [CarCompanyFilter]
# ...
执行这些步骤后,您可能会看到过滤器:
auto_complete 功能),所以只要您使用的 Django 版本大于 2.0,就可以了。list_filters,例如更改下拉菜单上方的标题或自定义搜索逻辑等。str(obj) 以外的其他内容
【讨论】: