You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Django Graphene项目报错module 'graphene' has no attribute 'string'

问题解决方法

你的错误和配置无关,是代码编写时的语法错误导致schema导入失败,具体错误点和修正方案如下:

错误点1:类型名大小写错误

报错提示module 'graphene' has no attribute 'string'直接指向的问题是:你在应用内schema.py的TodoCreate参数定义中,把graphene.String写成了全小写的graphene.string,graphene所有内置类型名均为首字母大写格式。

错误点2:参数名大小写错误

你定义字段必填时写的Required=True首字母大写,graphene的必填参数为全小写的required=True。

错误点3:类命名冲突(隐藏问题)

你应用内的Mutation类命名为Mutation,根目录的schema.py里的Mutation类也叫Mutation,导入时会出现命名冲突,建议调整应用内的Mutation类名避免覆盖。


修正后的代码片段:

应用内schema.py修改部分

# create todo
class TodoCreate(graphene.Mutation):
    class Arguments:
        # 修正类型名大小写、参数名大小写
        title = graphene.String(required=True)
        text = graphene.String(required=True)

    todo = graphene.Field(TodoType)

    def mutate(root, info, title, text):
        # userId = info.context.user
        user = User.objects.get(id=2)
        todo = TodoList(userId=user, title=title, text=text)
        todo.save()
        return TodoCreate(todo=todo)


# 调整类名避免和根schema的Mutation重名
class TodoMutation(graphene.ObjectType):
    createTodo = TodoCreate.Field()

根schema.py修改部分

# 导入调整后的TodoMutation
class Query(TodoQuery, graphene.ObjectType):
    pass

# 继承重命名后的TodoMutation,避免命名冲突
class Mutation(TodoMutation, graphene.ObjectType):
    pass

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

修改后重启服务即可解决报错。


内容的提问来源于stack exchange,提问作者M N Tushar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 16:48:02