首页 > 解决方案 > Flask SQLAlchemy 强制连接

问题描述

我有以下两个课程。我想要做的是让我的课程名称字段始终出现在我的课程区域学习查询中

class Curriculum(db.Model, SerializableModel):
  __tablename__ = "curriculum"
  id = db.Column(db.Integer, primary_key=True)
  name = db.Column(db.String(300), nullable=False)
  iscurrent = db.Column(db.Boolean, nullable=False)
  notes = db.Column(db.Text)
  areasoflearning = db.relationship('CurriculumAreaOfLearning', lazy='dynamic')

class CurriculumAreaOfLearning(db.Model, SerializableModel):
  __tablename__ = "curriculumareaoflearning"
  id = db.Column(db.Integer, primary_key=True)
  name = db.Column(db.String(300), nullable=False)
  curriculumid = db.Column(db.Integer, db.ForeignKey('curriculum.id'), nullable=False)
  curriculum = db.relationship('Curriculum', lazy='joined')

我尝试了以下查询。我的查询中没有课程的属性

db.session.query(CurriculumAreaOfLearning).join(models.Curriculum, models.CurriculumAreaOfLearning.curriculumid == models.Curriculum.id)

我尝试了以下查询。我收到一个错误

db.session.query(CurriculumAreaOfLearning).join(models.Curriculum, models.CurriculumAreaOfLearning.curriculumid == models.Curriculum.id).add_columns(model.Curriculum.name)

AttributeError:类型对象'CurriculumAreaOfLearninig'没有属性'Curriculum'

标签: pythonflaskflask-sqlalchemy

解决方案


尝试这个:

db.session.query(CurriculumAreaOfLearning, Curriculum)
          .join(Curriculum, Curriculum.id == CurriculumAreaOfLearning.curriculumid).all()

推荐阅读