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

如何通过Django ORM从父模型访问子模型?解决字段解析错误

解决Django父模型反向查询子模型的错误

问题原因

你遇到的Cannot resolve keyword 'product_set' into field错误,是因为Django默认的反向关联名称可能未被正确识别,更稳妥的方式是显式定义反向关联的名称。

解决方案

方法一:显式指定反向关联名称

修改Product模型中的collection外键字段,添加related_name参数明确反向关联的名称:

class Product(models.Model):
    description = models.TextField()
    unit_price = models.DecimalField(max_digits=6, decimal_places=2)
    inventory = models.IntegerField()
    # 添加related_name='products',指定Collection反向关联Product的名称
    collection = models.ForeignKey(Collection, on_delete=models.PROTECT, related_name='products')

执行数据库迁移

修改模型后,执行迁移命令更新数据库结构:

python manage.py makemigrations
python manage.py migrate

执行查询

使用指定的反向关联名称完成查询:

query_set = Collection.objects.filter(products__inventory__lt=10)

方法二:使用默认反向关联名称(无需修改模型)

如果不想修改模型,确认使用Django默认的反向关联名称(子模型小写名+_set),检查拼写无误后执行查询:

query_set = Collection.objects.filter(product_set__inventory__lt=10)

注:若此方式仍报错,优先使用方法一显式指定related_name,避免默认名称带来的识别问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 14:21:01