python - Graphql Django 获取嵌套对象属性的最佳方法
问题描述
而不是像这样进行查询
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
}
}
对此有什么最佳实践或想法吗?提前致谢 。
解决方案
我们像这样改变模型 // 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
}
}
其他人的建议?
推荐阅读
- javascript - 在 Javascript 中,简单的计算器,不起作用
- json - 使用 Unix 命令拆分拆分大型 JSON 数据
- c++ - 从 `vector 启用隐式转换
&` 到 `const 向量 &` - cython - 在c程序中使用cython和ctypes接口调用python函数获取'c'之类的结构
- javascript - 如何在数据表的打印模式下并排设置多个 div 的标题
- python - Django REST 框架视图集 API 调用
- python - 我使用了 response=requests.post("
",data={'key':' '}) 但输出显示 Unrecognized token 'key': was expected ('true','false'or'null - sql - 使用索引搜索选择具有多个文本条件的所有列
- python - 在 LabVIEW 中集成 VI
- python - 如何在python中使用黑名单过滤列表