Question 28
Consider the following Flask-SQLAlchemy models for a library management system:
File: models.py
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Library(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(100), unique=True, nullable=False) location = db.Column(db.String(200), nullable=False) books = db.relationship('Book', backref='library_ref', lazy=True)
class Author(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(80), nullable=False) email = db.Column(db.String(120), unique=True, nullable=True) books = db.relationship('Book', backref='author_ref', lazy=True)
class Book(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(150), nullable=False) isbn = db.Column(db.String(13), unique=True, nullable=False) library_id = db.Column(db.Integer, db.ForeignKey('library.id'), nullable=False) author_id = db.Column(db.Integer, db.ForeignKey('author.id'), nullable=False) is_available = db.Column(db.Boolean, default=True)File: app.py
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/books/<int:library_id>', methods=['GET'])def get_library_books(library_id): library = Library.query.get_or_404(library_id) available_books = Book.query.filter_by( library_id=library_id, is_available=True ).all()
result = [] for book in available_books: result.append({ 'id': book.id, 'title': book.title, 'author': book.author_ref.name, 'isbn': book.isbn })
return jsonify({ 'library': library.name, 'location': library.location, 'available_books': result })Based on the above data, answer the given subquestions.
Which of the following statements about the database schema and model relationships is correct?