Отмена вложенности вложенных данных в схему

#sqlalchemy #flask-sqlalchemy #marshmallow

Вопрос:

Новичок в Sqlalchemy и зефире.Я пытаюсь создать схему для двух объединенных таблиц без вложенности другой таблицы. Но я, кажется, не совсем понимаю.

Это модель

 from sqlalchemy import BigInteger, Date, Float, Time
from sqlalchemy import  DateTime, Column, Integer, and_
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declarative_base
from marshmallow_sqlalchemy import SQLAlchemySchema,, auto_field, fields
from flask_marshmallow import Marshmallow


ma = Marshmallow()
Base = declarative_base()
Base.query = db_session.query_property()


class A(Base):
    __tablename__ = 'a'
    __table_args__ = (
        UniqueConstraint('datetime', 'time_code'))

    id = Column(BigInteger, primary_key=True, index=True)
    datetime = Column(DateTime, index=True)
    code = Column(BigInteger, index=True)
    start = Column(Time)
    end = Column(Time)
    price_a= Column(Float)
    price_c= Column(Float)
    alpha = relationship(
        B,foreign_keys=[B.datetime,B.code],
        primaryjoin=and_(
            B.datetime == datetime,B.code == code))


class B(Base):
    __tablename__ = 'b'
    __table_args__ = (
        UniqueConstraint('datetime', 'time_code'))

    id = Column(BigInteger, primary_key=True, index=True)
    datetime = Column(DateTime, index=True)
    code = Column(BigInteger, index=True)
    start = Column(Time)
    end = Column(Time)
    price_b= Column(Float)
    
 

Это схема

 class ASchema(SQLAlchemySchema):
    class Meta:
        model = A
    price_a = auto_field()
    price_c = auto_field()


class BSchema(SQLAlchemySchema):
    class Meta:
        ordered = True
        model = B
    datetime = auto_field()
    code = auto_field()
    start = auto_field()
    price_b=auto_field()
    alpha = fields.Nested(ASchema(many=True))

 

Запрос

 def get(start_date, end_date):
    b_schema = ImbalanceSchema(many=True)
    values = BSchema.query.filter(BSchema.datetime.between(
            start_date, end_date)).order_by(BSchema.datetime).all()
    b_schema.dump(values)
    return {'status': 200,
                'name': 'prices',
                'data': values}
    
 

where i run the query i get:

 {"status": 200, 
"name": "prices", 
"data": [{"datetime": "2021-01-09T00:00:00", "code": 1, "start": "00:00:00", "price_b": 134.2, "alpha": [{"price_a": 122.0, "price_c": 110.88},.......]}
 

Однако я хочу вот чего:

 {"status": 200, 
"name": "prices", 
"data": [{"datetime": "2021-01-09T00:00:00", "code": 1, "start": "00:00:00", "price_b": 134.2, "price_a": 122.0, "price_c": 110.88},.......]}
 

Я попробовал использовать Plunk, но все равно ничего не получил.
Я мог бы использовать цикл, чтобы выровнять его, но таблица слишком длинная, и цикл может увеличить время выполнения.
Любой метод, который мог бы помочь мне достичь моей цели, будет оценен по достоинству