Sqlalchemy Graphene глубоко вложенные схемы

Я новичок в графене

Я пытаюсь получить информацию от 3 моделей: две модели соединяются (пользователь и классы) имеют отношения "многие ко многим", одна модель (уроки) соединяются как многие к одному с моделью классов.

Моя цель - иметь возможность отображать информацию о модели класса в виде списка внутри класса после данных пользователя. Но я мог показывать только данные между пользователями и классами. Но необходимо перечислить все данные Пользователь -> Классы -> Уроки. Как это сделать холодно?

вот как это должно выглядеть

мои модели:

table = Table('table', Base.metadata,
    Column('left', Integer, ForeignKey('left.id')),
    Column('right', Integer, ForeignKey('right.id'))
)

class User(Base):
    __tablename__ = 'right'
    id = Column(Integer, primary_key=True)
    name = Column(String(255))
    lessons = relationship("Class",
                    secondary=table,
                    backref="user")

class Classes(Base):
    __tablename__ = 'left'
    id = Column(Integer, primary_key=True)
    name = Column(String(255))
    lessons = relationship('User', backref='classes')



class Lessons(Base):
    __tablename__ = 'lessons'
    id = Column(Integer, primary_key=True)
    name = Column(String(255))
    class_id= Column(Integer, ForeignKey('class.id'))

Мои схемы и запросы:

class UserSchema(SQLAlchemyObjectType):
    class Meta:
        model = User
        interfaces = (relay.Node, )


class ClassesSchema(SQLAlchemyObjectType):
    class Meta:
        model = Contract
        interfaces = (relay.Node, )

class LessonsSchema(SQLAlchemyObjectType):
    class Meta:
        model = Plan
        interfaces = (relay.Node,)


class Query(graphene.ObjectType):
    node = relay.Node.Field()
    # Allows sorting over multiple columns, by default over the primary key
    all = SQLAlchemyConnectionField(UserSchema)
    # Disable sorting over this field
    all_classes = SQLAlchemyConnectionField(ClassesSchema)

    all_lessons = SQLAlchemyConnectionField(LessonsSchema)

schema = graphene.Schema(query=Query)

мощность косилки:

{
  "data": {
    "all": {
      "edges": [
        {
          "node": {
            "id": "TWFpbmNoZW1hOjE=",
            "name": "User 1",
            "Classes": {
              "edges": [
                {
                  "node": {
                    "id": "Q29udHJhY3RTY2hlbWE6Mg==",
                    "name": "First class",
                    "lessons": {
                      "edges": []
                    }
                  }
                }
              ]
            }
          }
        },

Основная проблема в том, что список уроков пуст, но если я запрашиваю уроки, он показывает информацию, и она не пуста.

0 ответов

Другие вопросы по тегам