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

如何在Django filter表单中过滤关联模型的用户first name字段

实现方法

django-filter默认会为外键类型字段自动生成下拉选择框,你只需要手动定义针对关联user表first_name字段的文本过滤器即可,修改后的filters.py代码如下:

import django_filters
from django_filters import CharFilter
from .models import Profile

class ProfileFilter(django_filters.FilterSet):
    # 自定义姓名搜索过滤器
    user_first_name = CharFilter(
        field_name="user__first_name",  # 双下划线跨关联表查询用户的first_name字段
        lookup_expr="icontains",  # 模糊匹配,不区分大小写,输入部分内容即可命中
        label="用户姓名搜索"  # 表单输入框的提示文字,可自定义
    )

    class Meta:
        model = Profile
        # 仅保留需要的过滤字段,不要用__all__避免生成多余的user下拉选择框
        fields = ["user_first_name", "total_members"] # 其他需要过滤的字段直接追加到列表即可

参数说明

  • lookup_expr可根据业务需求调整:
    • icontains:模糊匹配,不区分大小写(最常用)
    • contains:模糊匹配,区分大小写
    • exact:完全匹配
    • startswith:匹配内容开头

修改完成后无需调整视图和模板逻辑,原有表单渲染逻辑会自动将该字段渲染为文本输入框,用户直接输入姓名即可完成过滤,不会再生成用户下拉选择框。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:54:07