【问题标题】:How to create a viewer field for relay in django-graphene root schema?如何在 django-graphene 根模式中为中继创建查看器字段?
【发布时间】:2019-02-12 03:38:00
【问题描述】:

如何在 graphene-django 中为 react-relay 创建一个查看器字段? 这不像预期的那样工作。我正在使用graphene-django v.2.2。姜戈 2.1。 React-relay v1.7.0-rc.1.

// landingpage.schema.py

class CollectionNode(DjangoObjectType):
  class Meta:
    model = Collection
    interfaces = (relay.Node, )

class Viewer(graphene.ObjectType):
  class Meta:
    interfaces = [relay.Node, ]

  collection = graphene.Field(CollectionNode)

  def resolve_collection(self, info, **kwargs):
    return Collection.objects.all()


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

  def resolve_viewer(self, info, **kwargs):
    return Viewer() # or info.parent_type

【问题讨论】:

    标签: django reactjs graphene-python relaymodern react-relay


    【解决方案1】:

    我自己设法解决了这个问题。所以我像这样将查看器对象移动到根模式。希望这可以帮助遇到同样问题的其他人。

    // project_name.schema.py
    
    import graphene
    import graphql_jwt
    from django.conf import settings
    from graphene import relay, ObjectType
    
    import about.schema
    import shop.schema
    import landingpage.schema
    
    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() # or info.parent_type
    
    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)
    

    _

    // landingpage.schema.py
    
    class CollectionNode(DjangoObjectType):
      class Meta:
        model = Collection
        interfaces = (relay.Node, )
    
    # 
    #  QUERY
    
    class Query(object):
      class Meta:
        interfaces = [relay.Node, ]
    
      collection = graphene.Field(CollectionNode)
    
      def resolve_collection(self, info, **kwargs):
        return Collection.objects.all()
    

    【讨论】:

    • 为什么这不在食谱示例或 django-graphene 文档中?
    • 我不知道。希望这对您有所帮助。
    猜你喜欢
    • 2019-01-13
    • 2019-03-13
    • 1970-01-01
    • 2019-09-20
    • 1970-01-01
    • 2018-08-25
    • 2019-07-07
    • 2013-07-05
    • 2018-07-12
    相关资源
    最近更新 更多