GraphQL:查询和变异可以拆分成单独的类吗?

Rob*_*_LY 0 django graphql graphene-python

在我的 Graphene-Django 项目中,我有这样的结构:

项目级别:

schema.py
Run Code Online (Sandbox Code Playgroud)

应用级别:

schema.py
queries.py
mutations.py
Run Code Online (Sandbox Code Playgroud)

这很有效,但查询文件已经变得非常大。有没有办法将类 Query拆分为多个类和/或多个文件?

罗伯特

Mar*_*ian 7

从项目模式文件的角度来看,您可以在 Query 类中使​​用继承来拉入每个单独的 Query 类。您可以使用相同的技术来拆分您的 Mutation。例如:

from django.conf import settings

import graphene
from graphene_django.debug import DjangoDebug

from django.conf import settings

from app1.schema import App1Query, App1Mutation
from app2.schema import App2Query, App2Mutation

class Query(App1Query, App2Query, graphene.ObjectType):
     if settings.DEBUG:
         # Debug output - see
         # http://docs.graphene-python.org/projects/django/en/latest/debug/
        debug = graphene.Field(DjangoDebug, name='__debug')

class Mutation(App1Mutation, App2Mutation, graphene.ObjectType):
    pass

schema = graphene.Schema(query=Query, mutation=Mutation)
Run Code Online (Sandbox Code Playgroud)

(请注意,如果DEBUG为 True ,我还会动态添加调试类——这与您的问题无关,但它很方便。)

如果需要,您应该能够使用相同的继承技术进一步拆分查询,例如,拆分App1Query.