Graphql Django 获取嵌套对象属性的最佳方法
Posted
技术标签:
【中文标题】Graphql Django 获取嵌套对象属性的最佳方法【英文标题】:Graphql Django best way to get nested object property 【发布时间】:2018-12-08 18:39:09 【问题描述】:而不是像这样进行查询
query
allObjectC
id # self ID()
nestedB_set
id
nestedA_set
id # ID() we want to get
新的 Graphql 查询
query
allObjectC
id # self ID()
nestedA_id # nested nested ID() we want to get
对此有什么最佳实践或想法吗? 提前致谢。
【问题讨论】:
【参考方案1】:我们像这样改变模型 // Models.py
class ObjectA(models.Model):
...
class ObjectB(models.Model):
propertyB = models.ForeignKey(ObjectA, on_delete=models.CASCADE, related_name='nestedB')
class ObjectC(models.Model):
propertyC = models.ForeignKey(ObjectB, on_delete=models.CASCADE, related_name='nestedC')
@property # new property created
def nestedB_nestedA_id(self):
return self.propertyC.nested_objectB.nested_objectA.id
我们像这样改变graphql模式 // schema.py
class ObjectCNode(DjangoObjectType):
nestedB_nestedA_id = graphene.Int(source='nestedB_nestedA_id') # as proxy
nestedA_id = graphene.ID() # globalID of ObjectANode we want to get
def resolve_nestedB_nestedA_id(self, info, **kwargs):
return self.nestedB_nestedA_id
def resolve_nestedA_id(self, info, **kwargs):
return relay.Node.to_global_id(ObjectANode._meta.name, self.nestedB_nestedA_id)
现在查询
query
allObjectC
id # self ID()
nestedA_id # nested nested ID() we want to get
其他建议?
【讨论】:
以上是关于Graphql Django 获取嵌套对象属性的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Django 嵌套对象添加 GraphQL 突变?
使用嵌套对象获取 React 中 Graphql 的问题 - 对象未定义