石墨烯提供了一种GenericScalar
类型。您可以使用它来输入/输出通用类型,如int
, str
, dict
,list
等。
from graphene import InputObjectType, Mutation, String, Int
from graphene.types.generic import GenericScalar
class UserInput(InputObjectType):
name = String()
age = Int()
inventory = GenericScalar()
class addUser(Mutation):
class Arguments:
user_data = UserInput()
def mutate(root, info, user_data):
# do something with user_data
您的输入看起来像
mutation Create {
addUser (
userData: {
name: "Shibunika"
age: 21
inventory: {
item1: 45,
item2: 25
}
}
)
}
请注意,它inventory
可以接受任何通用输入,因此请确保对其进行验证。
此外,当使用GenericScalar
字段进行输出(查询)时,您将无法查询其子字段,例如item1
, item2
. 但是您可以为该字段编写解析器,以确保只返回特定的子字段。
这是相应 GitHub 问题的链接。
在您的情况下,inventory
字段具有明确定义的结构,因此 Mark Chackerian 的解决方案更适合。