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

如何在Django ORM中从School模型查询关联Student符合条件的实例

问题解决步骤

1. 修正模型关联错误

你的模型定义存在关键问题:Student的外键字段a指向了Vendor,但题目要求School与Student是多对一关系,所以需要将外键改为指向School,建议同时指定related_name便于反向查询:

class School(models.Model):
    name = models.TextField(default="hello world")

class Student(models.Model):
    key = models.TextField(default="somedata")
    # 修正外键关联,并指定related_name为students
    school = models.ForeignKey(School, on_delete=models.CASCADE, related_name="students")

2. 正确的查询写法

如果使用了上述指定的related_name="students",整合后的查询语句如下:

from django.db.models import Q

School.objects.filter(Q(name="hello world") | Q(students__key="test"))

如果不指定related_name,Django会使用默认的反向关联名称student_set,此时查询语句为:

School.objects.filter(Q(name="hello world") | Q(student_set__key="test"))

报错原因说明

之前的写法报错有两个核心原因:

  • 模型中外键未正确关联School,导致School与Student之间无合法的反向关联关系;
  • 即使关联正确,默认反向关联名称是模型名小写_set,直接写student__key不符合Django的反向查询规则。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 16:42:08