如何使“SQLAlchemyConnectionField”成为必需的?

2024-09-26 23:26:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我正试图创建一个查询,它需要从Connection类型中选择一个子字段。我尝试了几种不同的SQLAlchemyConnectionField组合,它们会导致各种各样的错误。你知道吗

books_connection = SQLAlchemyConnectionField(graphene.NonNull(Book))
books_connection = SQLAlchemyConnectionField(Book, required=True)

两者都会导致

TypeError: issubclass() arg 1 must be a class

以及

books_connection = graphene.NonNull(SQLAlchemyConnectionField(Book))
books_connection = graphene.Field(SQLAlchemyConnectionField(Book), required=True)

两者都会导致

AttributeError: 'SQLAlchemyConnectionField' object has no attribute '_meta'

Book类型定义如下:

class Book(SQLAlchemyObjectType):
    class Meta:
        model = models.Book
        interfaces = (graphene.relay.Node, )
        only_fields = ("id", "title", "author", "last_read_at", "is_best_seller", "price", )

    genre = BookGenreEnum()

Query类型如下所示:

class Query(graphene.ObjectType):
    book = graphene.Field(Book, id=graphene.ID(), required=True)
    books = graphene.List(graphene.NonNull(Book), required=True)
    books_connection = SQLAlchemyConnectionField(Book) # Want this to be required!

    def resolve_book(parent, info, **kwargs):
        session = info.context.get("session")
        return session.query(models.Book).get(kwargs["id"])

    def resolve_books(parent, info):
        session = info.context.get("session")
        return session.query(models.Book).all()

Tags: infoidtrue类型getmodelssessionrequired

热门问题