0

I have model Category, which can have parent Category(self reference), so I can make hierarchy of categories.

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

I don't know how to write serializer. Here is my try:

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)

This throws error:

RecursionError: maximum recursion depth exceeded while calling a Python object

So how do I define it properly?

1 Answers1

0

You caused cycle import. It's because that category and category["parent"] used the same model name.

Try this:

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", {}))
zwwhdls
  • 1
  • 1