You need to enable JavaScript to run this app. Django Queryset添加filter筛选时报invalid literal for int()错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

Django Queryset添加filter筛选时报invalid literal for int()错误如何解决

问题解答

错误原因

这个报错的核心原因是你的Similarity模型中,first_movie字段为外键类型,而非字符串类型。
Django处理外键字段的直接筛选时,默认会匹配关联表的主键值(通常为自增的int类型ID),你传入了字符串Innocence (2014),Django尝试将该字符串转换为int类型的主键值,转换失败就抛出了对应的错误。

解决方法

你有两种可选的筛选方式:

  1. 如果你提前知道Innocence (2014)这条电影记录对应的主键ID,直接传入ID筛选即可:
# 把<对应电影的ID>替换成实际的int类型ID值
similarity_scores = Similarity.objects.filter(first_movie=<对应电影的ID>).order_by('-similarity_score')[:10]
  1. 如果你需要通过电影名称筛选,使用Django的双下划线跨关联表查询语法,假设first_movie关联的电影模型中,存储电影名称的字段名为name,写法如下:
# 把__name后缀替换成你实际电影模型中存名称的字段名即可
similarity_scores = Similarity.objects.filter(first_movie__name="Innocence (2014)").order_by('-similarity_score')[:10]

注:原语句中的all()可以省略,filter方法本身会返回QuerySet对象,不影响后续的排序和切片操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 02:45:04