如何解析具有多对多关系的石墨烯django节点场
当我尝试解析具有多对多关系的节点字段时,会得到“Received Compatible instance error”。我需要帮助来解决这个问题。我列出了graphene django中的模型、graphql类型,以供参考 我使用的代码版本:如何解析具有多对多关系的石墨烯django节点场,django,graphql,graphene-python,Django,Graphql,Graphene Python,当我尝试解析具有多对多关系的节点字段时,会得到“Received Compatible instance error”。我需要帮助来解决这个问题。我列出了graphene django中的模型、graphql类型,以供参考 我使用的代码版本: graphene django版本:2.2.0 python版本:3.5.2 django版本:(2,0,8,'最终版',0) 我获得了Model B字段的数据,但ModelLink显示了以下错误: "errors": [ { "m
graphene django版本:2.2.0
python版本:3.5.2
django版本:(2,0,8,'最终版',0) 我获得了Model B字段的数据,但ModelLink显示了以下错误:
"errors": [
{
"message": "Received incompatible instance \"[None, None]\"."
},
{
"message": "Received incompatible instance \"[]\"."
}
]
我需要帮助来解析多对多关系节点字段。由于没有使用上下文,我将提到以下内容
DjangoObjectType
有一个很好的特性-您可以使用纯django模型实例来代替它,并且:
self
中的resolve.*
方法将是实际的django模型modelARecs = [rel.model_a for rel in self.modelamodelb_set.all()]
而不是:
modelB = ModelB.objects.get(id=self.id)
modelaIDs = modelB.modelamodelb_set.select_related('model_a').values_list('model_a_id', flat=True)
modelARecs = ModelA.objects.filter(id__in=modelaIDs)
只需返回django model
DjangoObjectType
,就可以了。上下文如下。模型A和B有一个带有透视表AB的MTM rel。模型B有一个对A记录列表的引用,所以我试图获取模型A的记录列表以匹配B记录。我确实按照您的建议替换了代码,但仍然收到不兼容的实例错误,显示了模型名称和值。我确实找到了一个解决方案,就是不要在模型B节点中向模型a添加引用字段,即在上面的示例中删除模型链接。在查询模型B节点时,您将能够使用模型_链接自动获取模型A的记录,因为它已经在模型A中被引用。
modelB = ModelB.objects.get(id=self.id)
modelaIDs = modelB.modelamodelb_set.select_related('model_a').values_list('model_a_id', flat=True)
modelARecs = ModelA.objects.filter(id__in=modelaIDs)