У Ruby on Rails есть связь «есть много через».Например,
store has_many :shelves
shelf has many :books
store has_many :books, through: :shelves
Это позволит нам позвонить store.books
и получить все книги в магазине.Я пытаюсь воспроизвести эту функцию во Flask, но не могу найти информацию.
Например, вот отношения один ко многим, написанные на Python.В магазине много полок, на полках много книг.
class Store(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(50), nullable=False)
shelves = db.relationship('Shelf', backref='store')
class Shelf(db.Model):
id = db.Column(db.Integer, primary_key=True)
location = db.Column(db.String(120), nullable=False)
store_id = db.Column(db.Integer, db.ForeignKey('store.id'), nullable=False)
books = db.relationship('Book', backref='shelf')
class Book(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(120), nullable=False)
shelf_id = db.Column(db.Integer, db.ForeignKey('shelf.id'), nullable=False)
С кодом, который написан в данный момент, я могу позвонить store.shelves
и shelf.books
.Однако, чтобы добраться до книг, мне пришлось бы пройтись по полкам и позвонить .books
.
Есть ли способ позвонить сюда store.books
?