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

如何在Flask和Flask-SQLAlchemy中过滤查询提交给指定教师的作业

建议帖子标题

Flask-SQLAlchemy 查询指定教师收到的已提交作业返回空结果如何解决?


问题原因

你写的查询方法缺失了Flask-SQLAlchemy模型必需的query查询对象,直接在模型类上调用filter方法不会生效,这是新手最常见的写法错误。

修正后的代码

基础修复版(直接解决查询为空问题)

@classmethod  # 写在Assignment类中
def get_assignments_by_teacher(cls, teacher_id):
    return cls.query.filter(cls.teacher_id == teacher_id).all()

优化版(贴合业务需求)

你的业务场景是拉取学生提交给教师的作业,草稿状态的作业不需要被教师侧查询到,建议补充状态过滤条件:

@classmethod  # 写在Assignment类中
def get_assignments_by_teacher(cls, teacher_id):
    return cls.query.filter(
        cls.teacher_id == teacher_id,
        cls.state == AssignmentStateEnum.SUBMITTED
    ).all()

可选排查方案

如果修改后仍有异常,可按以下步骤定位问题:

  • 打印传入的p.teacher_id值,确认该ID确实存在于teachers表的id字段中,不存在传参错误
  • 打印生成的SQL语句确认查询条件符合预期:
    # 放在查询方法中即可输出最终执行的SQL
    print(cls.query.filter(cls.teacher_id == teacher_id))
    
  • 检查assignments表中对应teacher_id的记录,state字段值是否符合过滤要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:48:03