Как создать поле просмотра для реле в корневой схеме django-graphene? - PullRequest
0 голосов
/ 06 сентября 2018

Как создать поле просмотра для реакции-реле в графене-джанго? Это не работает так, как задумано. Я использую графен-джанго v.2.2. Джанго 2.1. Реакторное реле 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

1 Ответ

0 голосов
/ 06 сентября 2018

Мне удалось решить проблему самостоятельно. Поэтому я переместил объект просмотра в корневую схему следующим образом. Надеюсь, что это может помочь любому, кто имеет такую ​​же проблему.

// 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()
...