在我的项目中,我有一个名为Workflows
的对象与另一个名为DataSources
的对象有1:多关系。我非常接近能够使用GraphQL Mutation创建新的工作流程。这是相关的代码:
class DataSourceInput(graphene.InputObjectType):
id = graphene.Int()
database_name = graphene.String()
table_name = graphene.String()
@classmethod
def get_node(cls, id, context, info):
node = get_datasource(id)
return node
class CreateWorkflow(relay.ClientIDMutation):
class Input:
name = graphene.String()
description = graphene.String()
datasources = graphene.List(DataSourceInput)
workflow = graphene.Field(Workflow)
success = graphene.Boolean()
errors = graphene.String()
@classmethod
def mutate_and_get_payload(cls, input, context, info):
name = input.get('name')
description = input.get('description')
datasources = input.get('datasources')
try:
workflow = WorkflowModel.create(name, description, datasources)
return CreateWorkflow(workflow=workflow, success=True)
except Exception as e:
success = False
return CreateWorkflow(workflow=None, success=False, errors=str(e))
似乎失败的是提取我希望与我正在创建的新工作流相关联的DataSource。我收到的错误是“不可用的类型:'dict'”
我不确切地知道这个错误信息暗示我做了什么。
任何想法都会非常感激!
罗伯特
答案 0 :(得分:0)
在python中,如果将其指定为字典键,则可能会发生错误。 例如。
>>> a = dict()
>>> type(a)
<class 'dict'>
>>> a[[0]] = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
在字典中,哈希函数用于响应低成本处理的要求,从而避免在设置和获取值时通过 eq 进行整个搜索。
可哈希的示例是内置的int,str,tuple,frozenset。
在这种情况下,字典是Graphql请求。 因此,请首先检查查询中键的值是否可哈希。 另外,最好同时放置我请求的查询示例。