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

使用DRF ModelSerializer与search_fields时字段关键字解析失败问题

问题原因与解决方案

问题根源

DRF的SearchFilter是在数据库层面执行搜索的,它只能识别模型本身的字段,或者通过双下划线__关联的关联模型字段。你在VacancySerializer里定义的organization_small_name是序列化层的虚拟字段,数据库中不存在这个字段,因此SearchFilter无法解析该关键词,导致报错。

解决方法

直接在ViewSet的search_fields中使用关联模型的字段路径,通过organization__short_name关联到DictOrganization的short_name字段,替换原来的organization_small_name。

修改后的ViewSet代码:

class VacancyViewSet(viewsets.ModelViewSet):
    queryset = Vacancy.objects.all()
    serializer_class = VacancySerializer
    filter_backends = [filters.SearchFilter]
    # 改用关联模型的字段路径
    search_fields = ['organization__short_name']
    ...

额外说明

修改后,搜索请求会直接在数据库层面查询Vacancy关联的DictOrganization的short_name字段,完全满足你的搜索需求,同时Serializer中的organization_small_name依然可以正常返回给前端,不影响数据序列化逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 05:15:37