Настой SQLAlchemy принудительное соединение - PullRequest
0 голосов
/ 16 мая 2018

У меня есть следующие два класса. То, что я пытаюсь сделать, это иметь мое поле curriculum.name всегда появляться в моих запросах для curriculumareaoflearning

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'

1 Ответ

0 голосов
/ 16 мая 2018

Попробуйте это:

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