You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django后台:用admin_auto_filters实现联动自动补全下拉筛选

Django Admin联动筛选:用admin_auto_filters实现Funder与Scheme的联动自动补全

问题回顾

已通过smart-selects实现Project表单中Scheme下拉随Funder联动,但无法在Admin列表筛选区实现相同效果。使用Django原生SimpleListFilter可实现基础联动,但需要适配admin_auto_filters的自动补全功能。

解决方案

admin_auto_filters的AutocompleteFilter依赖Django的autocomplete视图,核心是重写其get_queryset方法来根据当前选中的Funder过滤选项,而非依赖SimpleListFilter的lookups逻辑。以下是完整实现:

完整代码实现

from django.contrib import admin
from admin_auto_filters.filters import AutocompleteFilter
from .models import Funder, Scheme, Project

# Funder自动补全筛选
class FunderFilter(AutocompleteFilter):
    title = 'Funder'
    field_name = 'funder'

# 联动的Scheme自动补全筛选
class SchemeAutocompleteFilter(AutocompleteFilter):
    title = 'Scheme'
    field_name = 'scheme'

    def get_queryset(self, request):
        # 获取当前选中的Funder ID(admin_auto_filters生成的默认参数名)
        funder_pk = request.GET.get('funder__pk__exact')
        qs = super().get_queryset(request)
        if funder_pk:
            # 根据选中的Funder过滤关联的Scheme
            qs = qs.filter(funders__pk=funder_pk).distinct()
        return qs

    def queryset(self, request, queryset):
        if self.value():
            return queryset.filter(scheme__pk=self.value()).distinct()
        return queryset

class ProjectAdmin(admin.ModelAdmin):
    search_fields = ['title', 'project_number']
    # 筛选顺序必须是Funder在前,确保Scheme能获取到Funder的筛选参数
    list_filter = [FunderFilter, SchemeAutocompleteFilter]
    # 配置autocomplete所需的字段搜索规则
    autocomplete_fields = ['scheme']

admin.site.register(Funder)
admin.site.register(Scheme)
admin.site.register(Project, ProjectAdmin)

关键说明

  1. 核心逻辑差异:admin_auto_filters的AutocompleteFilter不依赖lookups生成选项,而是通过get_queryset获取数据源,这是之前尝试失败的核心原因。
  2. 参数传递:通过request.GET.get('funder__pk__exact')获取Funder的筛选参数,这是admin_auto_filters生成的默认参数格式。
  3. 字段配置:必须在ProjectAdmin中配置autocomplete_fields = ['scheme'],否则自动补全功能无法生效。
  4. 筛选顺序:Funder筛选必须放在Scheme筛选前面,确保页面刷新时Scheme能读取到Funder的筛选状态。

内容的提问来源于stack exchange,提问作者HBMCS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 23:13:14