Flask RestPlus/RestX: как поделиться моделями API между пространствами имен?

У меня есть следующая структура в моем приложении Flask-RestX:

  • api_models
    • users
    • разрешения
  • namespaces
    • users
    • разрешения

У меня есть permission_model в api_models/permissions, которую я хочу использовать в user_model в api_models/users. Вариант использования:

Модель разрешений:api_models/permissions.py)

permission_model = permission_api.model('Permission', {
    "id": fields.String(description="Permission ID", required=True)
})

Модель пользователя:api_models/users.py)

from .permissions import permission_model

user_model = users_api.model('User', {
    "id": fields.String(description="User ID", required=True),
    "permissions": fields.List(fields.Nested(permission_model))
})

Я думал, что это так же просто, как импортировать модели из одного файла в другой, но при этом весь API ломается («определение API не предоставлено»). Я предполагаю, что это потому, что они привязаны к разным пространствам имен?

  1. Есть ли обходной путь?
  2. Как люди используют модели в разных пространствах имен?

Спасибо.


person Bogdan Dogaru    schedule 24.03.2020    source источник


Ответы (1)


Это действительно работает так, как ожидалось. Потратив много времени, пытаясь понять, почему модели не используются совместно, я начал с нуля, просматривая каждую строку кода, и когда я добрался до блока регистрации пространства имен.... Я почувствовал себя невероятно глупо: я забыл зарегистрировать фактическое пространство имен «Разрешения» в приложении. Сделал это и теперь работает нормально, и модели делятся, как и ожидалось.

person Bogdan Dogaru    schedule 24.03.2020