首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Graphene-Django:在模式组合查询对象中(只使用第一个参数)

Graphene-Django:在模式组合查询对象中(只使用第一个参数)
EN

Stack Overflow用户
提问于 2018-09-06 18:23:31
回答 2查看 3.2K关注 0票数 5

我试图结合Django 2.1中不同应用程序中的多个查询模式。使用石墨烯-django 2.2 (已经尝试了2.1与同样的问题)。Python 3.7

查询类只注册第一个变量。举个例子,shop.schema.Query。

代码语言:javascript
运行
复制
import graphene
import graphql_jwt
from django.conf import settings

import about.schema
import shop.schema
import landingpage.schema

class Query(about.schema.Query, shop.schema.Query, landingpage.schema.Query, graphene.ObjectType):
  pass

class Mutation(shop.schema.Mutation, graphene.ObjectType):
  token_auth = graphql_jwt.ObtainJSONWebToken.Field()
  verify_token = graphql_jwt.Verify.Field()
  refresh_token = graphql_jwt.Refresh.Field()

schema = graphene.Schema(query=Query, mutation=Mutation)

为什么是这样?python 3.7中的类有什么变化吗?石墨烯教程说这将继承多个..。

代码语言:javascript
运行
复制
class Query(cookbook.ingredients.schema.Query, graphene.ObjectType):
    # This class will inherit from multiple Queries
    # as we begin to add more apps to our project
    pass

schema = graphene.Schema(query=Query)

我正在将我的模式导出到schema.json,以便与react继电器一起使用它。我确实从landingpage( 3变量)中找到了我的对象“集合”查询模式。继电器返回:

错误: GraphQLParser:类型Viewer上的未知字段collection。资料来源: document AppQuery文件:containers/App/index.js

这是继电器阅读我的schema.json的问题吗?

EN

回答 2

Stack Overflow用户

发布于 2018-09-06 20:16:17

写完这篇文章后不久,我就解决了这个问题。我的问题是我在每个应用程序中都有一个Viewer对象。因为我发现有一个查看器-graphql很有用,如下所示:

代码语言:javascript
运行
复制
graphql'
  viewer {
    collection {
      somestuff
    }
  }
'

我将Viewer对象移到根schema.py上,如下所示:

代码语言:javascript
运行
复制
class Viewer(about.schema.Query, landingpage.schema.Query, shop.schema.Query, graphene.ObjectType):
  class Meta:
    interfaces = [relay.Node, ]

class Query(graphene.ObjectType):
  viewer = graphene.Field(Viewer)

  def resolve_viewer(self, info, **kwargs):
    return Viewer()

class Mutation(shop.schema.Mutation, graphene.ObjectType):
  token_auth = graphql_jwt.ObtainJSONWebToken.Field()
  verify_token = graphql_jwt.Verify.Field()
  refresh_token = graphql_jwt.Refresh.Field()

schema = graphene.Schema(query=Query, mutation=Mutation)
票数 0
EN

Stack Overflow用户

发布于 2021-12-01 09:51:11

  1. setting.py中添加一个名为schema.py的新文件
  2. schema.py中将查询和突变合并如下:

进口石墨烯 导入about.schema 导入shop.schema作为项目 导入landingpage.schema作为项目

然后添加:

代码语言:javascript
运行
复制
class Query(about.schema.Query, shop.schema.Query, landingpage.schema.Query,  graphene.ObjectType):
        pass
class Mutation(about.schema.Mutation, shop.schema.Mutation, landingpage.schema.Mutation, graphene.ObjectType):
        pass
schema = graphene.Schema(query=Query, mutation=Mutation)
  1. 按照以下方式在settings.py中配置组合模式: 石墨烯={“模式”:"core.schema.schema",}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52210104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档