I followed flask-marshmallow documentation and written below code, when i query author table i get empty books object from books table. Can you tell me what is the issue I am facing ?
also, i see pycharm is not detecting ma.Nested(), any way how to import it ?
class Author(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(255))
# books = db.relationship("Book", backref="authors")
# book_id = db.Column(db.Integer, db.ForeignKey("book.id"))
class Book(db.Model):
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(255))
author_id = db.Column(db.Integer, db.ForeignKey("author.id"))
author = db.relationship("Author", backref="books")
class BookSchema(ma.SQLAlchemySchema):
class Meta:
model = Book
include_fk = True
class AuthorSchema(ma.SQLAlchemySchema):
class Meta:
model = Author
id = ma.auto_field()
name = ma.auto_field()
books = ma.Nested("BookSchema", many=True)
# Creation of the database tables within the application context.
with app.app_context():
db.create_all()
author_schema = AuthorSchema(many=True)
book_schema = BookSchema(many=True)
@app.route('/', methods=["GET"])
def get_hello_world():
queryDB = Author.query.all()
result = author_schema.dump(queryDB)
print(result)
return jsonify(result)
if __name__ == '__main__':
app.run(debug=True)
I want to see full data from books table when i query author table.
The
books
attribute in theAuthorSchema
is a collection of nested objects. For this reason it is necessary to useList
in conjunction withNested
and the respective schema.In order not to have to define all attributes individually, I also recommend using
SQLAlchemyAutoSchema
.