@Dogrtt
Qt/Python разработчик

Как правильно серилизовать вложенные объекты Flask-SQLAlchemy средствами Flask-Marshmallow?

Добрый день.
Есть две таблицы:
Организации
class Organization(mixins.PaginatedAPIMixin, db.Model):
    __tablename__ = 'organization'

    id = db.Column(db.Integer, primary_key=True, nullable=False, unique=True)
    name = db.Column(db.String(128), nullable=False)
    document_cipher = db.Column(db.String(6), unique=True)
    address = db.Column(db.String(256))
    website = db.Column(db.String(32))
    is_active = db.Column(db.Boolean, default=True)
    organization_type_id = db.Column(db.ForeignKey('organization_type.id'),
                                     nullable=False, index=True)
    organization_type = db.relationship('OrganizationType', backref='organizations', lazy=True)
и
Типы организаций
class OrganizationType(mixins.PaginatedAPIMixin, db.Model):
    __tablename__ = 'organization_type'

    id = db.Column(db.Integer, primary_key=True, unique=True)
    type = db.Column(db.String(45), nullable=False, unique=True)
    description = db.Column(db.Text)
Так же, есть схемы для их (де)сериализации:
Схема организации
class OrganizationsSchema(ma.ModelSchema):
    class Meta:
        model = Organization
и
Схема типа организации
class OrganizationsTypesSchema(ma.ModelSchema):
    class Meta:
        model = OrganizationType

В итоге, хочу получить вот что:
Сериализованный объект
{
  "_links": {},
  "_meta": {},
  "items": [
    {
      "address": "address",
      "document_cipher": "ABCD",
      "id": 1,
      "name": "ООО \"Horns'n'Hoofs\"",
      "organization_type": {
            "id": 1,
            "name": "Owner",
            "description": "spam"
            },
      "website": "http://hnh.ololo"
    }
  ]
}

(Массив в organization_type поставил, чтоб унифицировать вывод, в некоторых местах будет много подобъектов), но на данный момент, приведенным выше кодом имею в organization_type просто айдишник свойства... Как с подобным справиться?
  • Вопрос задан
  • 225 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы