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

Django搜索报错FieldError:Related Field got invalid lookup: tag求助

Django壁纸搜索FieldError问题解决

错误根源

你的Wallpaper模型中tags字段使用的是TaggableManager()(属于django-taggit组件),而非你自定义的Tags模型关联。但查询时错误地用了tags__tag__icontains=search:

  • 若用django-taggit,其内置标签模型的字段名为name,不是tag
  • 你定义的Tags模型并未被实际关联使用

两种修复方案

方案1:继续使用django-taggit

修改查询语句中的标签搜索逻辑,适配taggit的字段名:

if search:
    wallpapers = Wallpaper.objects.filter(
        Q(name__icontains=search) | 
        Q(category__category_name__icontains=search) | 
        Q(tags__name__icontains=search)  # 替换tags__tag为tags__name
    ).distinct().order_by('-pk')
    WALL = None

方案2:改用自定义Tags模型

如果想使用自己定义的Tags模型,需修改Wallpaper的tags字段为多对多关联:

# models.py 中Wallpaper类的tags字段修改
class Wallpaper(models.Model):
    # 保留其他原有字段
    tags = models.ManyToManyField(Tags)  # 替换原TaggableManager()

修改后原查询中的tags__tag__icontains=search即可正常生效。

额外提示

  • 使用django-taggit时,需确保INSTALLED_APPS已添加'taggit'
  • distinct()必须保留,避免多对多关联导致的重复查询结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 18:18:29