gpt4 book ai didi

python - Graphql Django 获取嵌套对象属性的最佳方法

转载 作者:太空宇宙 更新时间:2023-11-04 04:38:50 24 4
gpt4 key购买 nike

而不是像这样进行查询

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
}
}

其他建议 ?

关于python - Graphql Django 获取嵌套对象属性的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51103910/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com