Flask-RESTplus не возвращает модель sqlalchemy - PullRequest
0 голосов
/ 09 сентября 2018

В моем контроллере API есть следующий код:

from flask import jsonify, current_app as app
from flask_restplus import Resource, Api, fields
from sqlalchemy import exc

from ..models.db_models import Book

api = Api(version='1.0', ...)

books = api.namespace('books', description='Database books')

@books.route('/<int:id>')
class Book(Resource):
    model = books.model('Book', {
        'id': fields.Integer,
        'sort': fields.String,
        'pubdate': fields.DateTime,
        'isbn': fields.String
    })
    @books.marshal_with(model)
    def get(self, id):
        return Book.query.filter_by(id = id).first()

Вот модель книги db:

class Book(db.Model):
    __tablename__ = 'books'

    id = db.Column(db.Integer, primary_key=True)
    sort = db.Column(db.String(200))
    pubdate = db.Column(db.DateTime)
    isbn = db.Column(db.String(13))

    def __init__(self, id, name, sort):
        self.id = id
        self.name = name
        self.sort = sort

    def __repr__(self):
        return '%s(%s)' % (self.__class__.__name__, {
            key: value
            for key, value in self.__dict__.items()
        })

    def serialize(self, links=False):
        serialize = {
            'id' : self.id,
            'sort' : self.sort,
            'pubdate' : self.pubdate,
            'isbn' : self.isbn
        }
        if links:
            serialize['links'] = [{
                'rel' : 'book',
                'href' : '{}/books/{}/authors'.format(app.config('URL'), self.id)
            }]
        return serialize

По какой-то причине, когда я пытаюсь вернуть результат из sqlalchemy, вместо него возвращается Internal Server Error. Я почти уверен, что в моей модели sqlalchemy нет ничего плохого (ошибка подключения или что-то другое), я смог вернуть объект без Flask-RestPlus. Кто-нибудь может указать мне правильное направление?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...