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

Django报错FieldError:ForeignKey不支持icontains查询如何解决?

问题解决:Django后台搜索ForeignKey字段触发FieldError错误

错误原因

你在BookAdmin的search_fields中直接指定了author这个ForeignKey字段,Django默认会对搜索字段使用icontains查找规则,但ForeignKey类型字段不支持该查找方式,必须明确关联到关联模型的具体字段才能进行搜索。

解决方案

修改BookAdmin里的search_fields配置,通过**双下划线(__)**关联到Author模型的first_name和last_name字段,以此实现按作者姓名搜索书籍的需求。

修改后的admin.py代码

class BookAdmin(admin.ModelAdmin):
    list_display = ('title', 'rating', 'author','is_bestselling',)
    list_display_links = ('title', 'rating',)
    # 关联Author模型的具体字段实现搜索
    search_fields = ('title', 'rating','author__first_name', 'author__last_name',)
    list_filter = ('rating', 'is_bestselling',)
    prepopulated_fields = {
        'slug': ('title',)
    }

class AuthorAdmin(admin.ModelAdmin):
    list_display = ('first_name', 'last_name',)
    list_display_links = ('first_name', 'last_name',)
    search_fields = ('first_name', 'last_name',)

补充说明

如果需要支持作者全名的模糊匹配(比如搜索"张三"能匹配到对应姓名的作者),上述配置同时搜索author__first_name和author__last_name就能覆盖姓名的各个部分,满足基本搜索需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 14:40:13