如何使用新添加的数据库表字段更新Saleor的Graphql响应?

时间:2019-05-22 14:41:00

标签: graphql saleor

首先,具有GraphQL的Saleor很棒。只是喜欢它。

我们出售的产品还有其他需要从Graphql获取的元数据。开箱即用的Graphql查询可以正常工作,例如:

{
  product (id: "UHJvZHVjdDo3Mg==") {
    id
    name
    description
  }
}

我需要做的是使用其他列(例如productInfo1,productInfo2和productInfo3)公开我的产品表中的数据。这部分当然很容易。

但是,我在努力更新Saleor Graphql方面很挣扎,因此我可以运行如下查询:

{
  product (id: "UHJvZHVjdDo3Mg==") {
    id
    name
    description {
      productInfo1
      productInfo2
      productInfo3
    }
  }
}

我浏览过Saleor文档,Stack Overflow和各种博客……我自己尝试了一些合乎逻辑的方法,但没有成功。

在这里,我渴望着手针对我们的需求进行此类更新。任何建议或指向“如何”位置的链接将不胜感激!

1 个答案:

答案 0 :(得分:1)

如果您想在说明中添加子字段,则需要做几件事:

  1. 创建新的描述对象类型,其中包含所需的子字段,例如:
class ProductDescription(graphene.ObjectType):
    productInfo1 = graphene.String()
    productInfo2 = graphene.String()
    productInfo3 = graphene.String()
  1. description类型下用新类型设置Product字段:
class Product(CountableDjangoObjectType):
    ...
    description = graphene.Field(ProductDescription)
  1. description类型下为Product添加解析器:
def resolve_description(self, info):
    return ProductDescription(
        productInfo1=self.description,
        productInfo2='Some additional info',
        productInfo3='Some more additional info',
    )

Saleor的GraphQL API基于Graphene框架。您可以在这里找到有关解析器和对象类型的更多信息:https://docs.graphene-python.org/en/latest/types/objecttypes/#resolvers