在 Django Admin 中,我们经常需要使用 list_filter
来为管理界面添加过滤功能。然而,有时我们希望过滤器能够动态地反映数据库中的实际值,而不是依赖于预定义的选项。本文将介绍如何实现一个基于数据库实际值的动态过滤器,以 ECR 仓库的区域过滤为例。
问题背景
在管理 ECR(Elastic Container Registry)仓库时,我们有一个 region
字段,表示仓库所在的区域。最初,我们可能使用了预定义的 settings.REGION_CHOICES
来设置过滤器。但随着时间推移,我们发现实际使用的区域可能与预定义选项不完全匹配,因此需要一个更加动态和灵活的解决方案。
© ivwdcwso (ID: u012172506)
技术实现
1. 创建自定义 SimpleListFilter
首先,我们创建一个继承自 admin.SimpleListFilter
的自定义过滤器类:
python">from