Join в flask-sqlalchemy
Есть два класса
class Authors(db.Model):
__tablename__ = 'authors'
id = db.Column('id', db.Integer, primary_key=True)
name = db.Column('name', db.String, nullable=False)
def __init__(self, name):
self.name = name
class Books(db.Model):
__tablename__ = 'books'
id = db.Column('id', db.Integer, primary_key=True)
isbn = db.Column('isbn', db.String, nullable=False)
title = db.Column('title', db.String, nullable=False)
author_id = db.Column('author_id', db.Integer,
db.ForeignKey('authors.id'), nullable=False)
year = db.Column('year', db.Integer)
def __init__(self, isbn, title, author_id, year):
self.isbn = isbn
self.title = title
self.author_id = author_id
self.year = year
Хочу сделать запрос books=Books.query.all(), но что бы я мог достучаться до Authors.name при обращении к элементу books
Получить название я могу с помощью books[x].title, например, а как потом получить Authors.name?
Понимаю, что нужен join, но не могу разобраться в синтаксисе, много примеров видел для sqlalchemy, но не для flask-sqlalchemy
Не хочется синтаксиса вроде db.session.query(Books,Authors).join()...
Ответы (1 шт):
Автор решения: dhvcc
→ Ссылка
Ответ нашелся через joinedload
Для этого необходимо было добавить
class Books(db.Model):
...
authors = db.relationship('Authors',
backref=db.backref('books', lazy=True))
...
И сделать запрос как Books.query.options(joinedload('authors'))