django - GraphQL AttributeError:模块“石墨烯”没有属性“英雄”
问题描述
我是 Django 和 GraphQL 的初学者,我在第一步遇到问题,我无法访问 GraphiQL,我遇到了错误
Could not import 'traindjango.schema.schema' for Graphene setting 'SCHEMA'.
AttributeError: module 'graphene' has no attribute 'Heroes'.
traindjango/heroes/schema.py
import graphene
from graphene_django import DjangoObjectType
from .models import Heroes
class HeroesType(DjangoObjectType):
class Meta:
model = Heroes
class Query(graphene.ObjectType):
heroes = graphene.Heroes(HeroesType)
def resolve_links(self, info, **kwargs):
return Heroes.objects.all()
traindjango/traindjango/schema.py
import graphene
import heroes.schema
class Query(heroes.schema.Query, graphene.ObjectType):
pass
schema = graphene.Schema(query=Query)
traindjango/traindjango/settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'heroes',
'graphene_django',
]
GRAPHENE = {
'SCHEMA' : 'traindjango.schema.schema',
}
traindjango/heroes/models.py
from django.db import models
class Heroes(models.Model):
name = models.CharField(max_length=100, verbose_name='Name')
power = models.IntegerField(default=0)
city = models.TextField(max_length=100, verbose_name='City' ,null=True, blank=True)
你能帮我做什么吗?
非常感谢
解决方案
代替
heroes = graphene.Heroes(HeroesType)
你需要
heroes = graphene.List(HeroesType)
Heroes
是你的模型,不属于石墨烯。
然后你需要重命名resolve_links
为resolve_heroes
PS 好的做法是用单数命名你的 django 模块,即 Hero,而不是 Heroes。Meta
如果不只是添加“s”,您可以为复数设置详细名称。
推荐阅读
- docker - Docker:无法从主机中的浏览器访问容器
- batch-file - 从 cmd 行运行批处理文件
- php - 我们如何使用 CK.editor 将图形粘贴到 Php Text 区域?
- authentication - Google Cloud Storage:为每个对象授予用户/传递凭据
- java - 即使键和值不为空,Java hashmap 也会给出空值
- javascript - 等待来自 HttpClient 的响应 get - 同步调用
- bash - 遍历文件夹(名称中带有空格)并将文件名更改为文件夹名称
- javascript - 手动更新记录时未触发 Sequelize 挂钩
- odoo - Odoo adding messages in oe_chatter
- wso2 - WSO2 IS - How to infer the parameter names in deployment.toml