2017-10-18 47 views
0

我试图用graphene-django创建一个graphql模式。 我使用python3.5和石墨烯== 1.4.1和石墨烯的Django == 1.3我使用django-graphene时出现错误

这是我的模块:

class category(models.Model): 
    QUESTION = 'Q' 
    SOLUTION = 'S' 
    UNKNOWN = 'U' 
    CATEGORY_CHOICE = (
     ('quiz', (
      (QUESTION, 'Question'), 
      (SOLUTION, 'Solution'), 
     ) 
     ), 
     (UNKNOWN, 'Unknown'), 
    ) 
    name = models.CharField(max_length=1, choices=CATEGORY_CHOICE) 
    image = models.ImageField(upload_to='uploads/category/', default='anonymous.jpg') 

这是我的架构:

class Query(graphene.AbstractType): 
    category = graphene.Field(categoryType, id=graphene.Int()) 
    def resolve_category(self, info, **kwargs): 
     id = kwargs.get('id') 
     if id is not None: 
      return models.category.objects.get(pk=id) 
     return None 

和:

class Query(graphene.ObjectType, schema.Query): 
    pass 


schema = graphene.Schema(query=Query) 

与此查询:

query{ 
    category(id: 1){ 
    id 
    } 
} 

我得到这个错误:

{ 
    "errors": [ 
    { 
     "locations": [ 
     { 
      "line": 2, 
      "column": 3 
     } 
     ], 
     "message": "resolve_category() takes 2 positional arguments but 4 were given" 
    } 
    ], 
    "data": { 
    "category": null 
    } 
} 

感谢您的帮助。 顺便说一句,我已经使用这个教程: http://docs.graphene-python.org/projects/django/en/latest/tutorial-plain/#getting-single-objects

回答

1

的文档被引用2.0版本的石墨烯,它摆脱了其中的一些论点。 django软件包的主要版本也受到了质疑。同时升级:

pip install "graphene>=2.0.dev" 
pip install "graphene-django>=2.0.dev"