Estoy usando matraz_restx para las API de swagger. Las versiones son las siguientes:
python - 3.8.0 flask - 2.0.2 flask_restx - 0.5.1El siguiente es el json anidado para el que necesito especificar el esquema:
dr_status_fields = app_api.model('DR Status',{ fields.String: { "elasticsearch": { "backup_status": fields.String, "backup_folder": fields.String, }, "mongodb": { "backup_status": fields.String, "backup_folder": fields.String, }, "postgresdb": { "backup_status": fields.String, "backup_folder": fields.String, }, "overall_backup_status": fields.String } })Pero con esto, cuando cargo la URL de Swagger en el navegador, aparece un error en la línea de comando:
Unable to render schema Traceback (most recent call last): File "/usr/local/lib/python3.8/site-packages/flask_restx/api.py", line 571, in __schema__ self._schema = Swagger(self).as_dict() File "/usr/local/lib/python3.8/site-packages/flask_restx/swagger.py", line 268, in as_dict "definitions": self.serialize_definitions() or None, File "/usr/local/lib/python3.8/site-packages/flask_restx/swagger.py", line 623, in serialize_definitions return dict( File "/usr/local/lib/python3.8/site-packages/flask_restx/swagger.py", line 624, in <genexpr> (name, model.__schema__) File "/usr/local/lib/python3.8/site-packages/flask_restx/model.py", line 76, in __schema__ schema = self._schema File "/usr/local/lib/python3.8/site-packages/flask_restx/model.py", line 159, in _schema properties[name] = field.__schema__ AttributeError: 'dict' object has no attribute '__schema__'Intenté verificar la documentación de matraz_restx para ver cualquier ejemplo de uso. Pero no pude encontrar ninguno. Por favor ayuda con respecto a lo mismo
Según la respuesta rmn , he intentado aplicar lo mismo. Pero aquí el problema es que hay una clave, es decir, en la Línea No.2 del esquema definido anteriormente -> fields.String: { . Creo que esto está causando el problema. He intentado usarlo de la siguiente manera:
dr_status_fields = app_api.model('Backup and restore related fields', { "backup_status": fields.String, "backup_folder": fields.String, }) dr_db_fields = app_api.model('DR Status', { "elasticsearch": fields.Nested(dr_status_fields), "mongodb": fields.Nested(dr_status_fields), "postgresdb": fields.Nested(dr_status_fields), "overall_backup_status": fields.String }) dr_timestamp_field = app_api.model('Timestamp', { fields.String: fields.Nested(dr_db_fields) }) Aquí dr_timestamp_field ha resultado en el mismo problema.
usar campos.Anidado :
backup_fields = api.model('Backup fields', { "backup_status": fields.String, "backup_folder": fields.String }) dr_status_fields = api.model('DR Status', { "elasticsearch": fields.Nested(backup_fields), "mongodb": fields.Nested(backup_fields), "postgresdb": fields.Nested(backup_fields), "overall_backup_status": fields.String })