Flask RestPlus inherit model doesn't work as expected
NS = Namespace('sample')child_model = NS.model('child', { 'childid': fields.String(required=True, readOnly=True), 'childname': fields.String(required=True), 'data': fields.String(required=True), 'complexdata': fields.Raw(required=False)})parent_model = NS.model('parent', { 'id': fields.String(readOnly=True), 'name': fields.String(required=True), 'childdata': fields.List( fields.Nested(child_model, required=True) )})
this is what works for me. It appears that Flask Restplus github is dead, no answer from maintainers. This might help someone.
This how I declared the nested fields in a serializer.py file
from flask_restplus import fieldsfrom api.restplus import apichild2 = api.model('child2', { 'child2name': fields.Url(description='child2 name'),})child1= api.model('child1', { 'child2': fields.Nested(child2)})parent = { 'name': fields.String(description='name'), 'location': fields.String(description='location details'),}parent ["child1"] = fields.Nested(child1)resource_resp = api.model('Response details', parent )
Usage in view.py, I am marshaling/generating the json with @api.marshal_with(resource_resp)
from flask import request, jsonifyfrom flask_restplus import Resourcefrom serializers import *ns = api.namespace('apiName', description='API Description')@ns.route('/route/<some_id>')class ResourceClient(Resource): @ns.response(401, "Unauthorized") @ns.response(500, "Internal Server Error") @api.doc(params={'some_id': 'An ID'}) @api.marshal_with(resource_resp ) def get(self, some_id): """ Do GET """ # Logic return {"status" : "success"}