烧瓶restplus马歇尔自我参考

时间:2018-03-23 16:59:21

标签: python flask-restplus

我有模型类别,可以有父类别(自引用),所以我可以制作类别的层次结构。

from project import db


class Category(db.Model):
    __tablename__ = "categories"
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    name = db.Column(db.String(64), nullable=False)
    parent_category_id = db.Column(db.Integer, db.ForeignKey('categories.id'), nullable=True)
    child_categories = db.relationship('Category', backref=db.backref('parent', remote_side=[id]), lazy=True)

    def __init__(self, name, parent_category_id=None):
        self.name = name
        self.parent_category_id = parent_category_id

我不知道如何编写序列化程序。这是我的尝试:

from flask_restplus import fields
from project import api


category = api.model('Category', {
    'id': fields.Integer(),
    'name': fields.String(required=True)
})
category['parent'] = fields.Nested(category)

抛出错误:

RecursionError: maximum recursion depth exceeded while calling a Python object

那么如何正确定义呢?

1 个答案:

答案 0 :(得分:0)

您造成了循环导入。这是因为category和category [“ parent”]使用相同的模型名称。

尝试一下:

from flask_restplus import fields
from project import api

category = api.model('Category', {
    'id': fields.Integer(),
    'name': fields.String(required=True)
})
category['parent'] = fields.Nested(api.model("ParentModel", {}))
相关问题