Graphql 石墨与石墨烯

Graphql 石墨与石墨烯,graphql,graphene-python,Graphql,Graphene Python,我有一个具有一对多关系的数据库模式。例如,一个部门有许多客户。是否有可能产生一个突变,创造一个客户和一个部门,并将他们联系起来?或者正确的方法是创建一个客户而不是一个部门,然后相互关联 在第二种方法中,我需要进行三次旅行,而不是一次。 有人能为我提供一个处理这种情况的图表吗?您可以定义您的变异输入以支持嵌套类型。这将允许您在一次发送中同时发送部门和客户 在返回有效负载中,您可以在查询中指定返回新创建的部门及其关联的客户 类客户(graphene.ObjectType): 客户id=graphen

我有一个具有一对多关系的数据库模式。例如,一个部门有许多客户。是否有可能产生一个突变,创造一个客户和一个部门,并将他们联系起来?或者正确的方法是创建一个客户而不是一个部门,然后相互关联

在第二种方法中,我需要进行三次旅行,而不是一次。
有人能为我提供一个处理这种情况的图表吗?

您可以定义您的变异输入以支持嵌套类型。这将允许您在一次发送中同时发送
部门
客户

在返回有效负载中,您可以在查询中指定返回新创建的
部门
及其关联的
客户

类客户(graphene.ObjectType):
客户id=graphene.Int(必需=真)
name=graphene.String(必需=True)
班级部门(graphene.ObjectType):
部门id=graphene.Int(必需=真)
name=graphene.String(必需=True)
客户=石墨烯。列表(客户)
类CustomerInput(graphene.InputObject类型):
name=graphene.String(必需=True)
类别部门突变(石墨烯、继电器、客户端突变):
类输入:
name=graphene.String(必需=True)
customer=石墨烯字段(CustomerInput)
部门=石墨烯。字段(部门)
@类方法
def mutate_和_get_有效载荷(cls、输入、上下文、信息):
new\u department\u name=input.get('name'))
new_customer=input.get('customer'))
logger.debug(新部门名称)
logger.debug(新客户)
#验证并持久化。。。
#为了简洁起见,我们返回虚拟对象
顾客(
客户id=1,
name=new\u customer.get('name')
)
部门(
部门id=1,
名称=新部门名称,
客户=[客户]
)
返回cls(部门=部门)
您将允许在一次行程中对关联实体进行变异和查询

如果使用
连接来定义关系,事情会变得有点复杂,但基本原则是一样的