Cómo agregar campos url para campos de salida nesteds en matraz restful

Estoy teniendo dificultades para generar las URL de punto final de API en los campos de salida nesteds usando [Flask-RESTful] [1].

Encontré que fields.Url('my_endpoint', absolute=True) solo genera url dentro de los campos de url superior, no el nested. werkzeug.routing.BuildError – [ werkzeug.routing.BuildError log Error] [1] https://gist.github.com/anonymous/6251c67089871d0e4516

Por ejemplo aquí están mis campos de url

 role_fields = { 'name': fields.String(attribute='title'), 'id': fields.Integer(attribute='id'), 'uri': fields.Url('user_endpoint', absolute=True) } user_fields = { 'id': fields.Integer, 'username': fields.String, 'email': fields.String, 'full_name': fields.String(attribute='real_name'), 'website': fields.String(default=None), 'bio': fields.String(default=None), 'created_date': fields.DateTime, 'modified_date': fields.DateTime, 'uri': fields.Url('user_endpoint', absolute=True), 'role': fields.Nested(role_fields), } 

El problema era fields.Url necesita un parámetro de punto final requerido, en este caso su username .

El parámetro username está disponible para user_fields con el objeto de user devuelto, pero el objeto de role user.role no contiene el atributo de username .

Así que asigné el attribute to ‘nombre de usuario attribute to objeto user.role` antes de devolverlo.

 user = get_user(username) #Get user object from db user.role.username = user.username return user