Как обновить ответы Saleor's Graphql новыми полями таблицы БД? - PullRequest
0 голосов
/ 22 мая 2019

Во-первых, Saleor с GraphQL - фантастика. Просто люби это.

Продукты, которые мы продаем, имеют дополнительные метаданные, которые мы должны получить от Graphql. Из коробки отлично работают запросы Graphql, такие как:

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

Что мне нужно сделать, это предоставить данные из моей таблицы продуктов с помощью дополнительных столбцов, таких как productInfo1, productInfo2 и productInfo3. Эта часть легка конечно.

Однако я борюсь с тем, как обновить Saleor Graphql, чтобы я мог выполнить запрос, подобный следующему:

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

Я прошел через документы Saleor, Переполнение стека и множество блогов ... Я сам пытался использовать некоторые логические подходы, но безуспешно.

Я готов начать работу над этими типами обновлений для наших нужд здесь. Будем очень благодарны за любые предложения или ссылки на "как" места!

1 Ответ

1 голос
/ 23 мая 2019

Если вы хотите добавить подполя к описанию, вам нужно сделать несколько вещей:

  1. Создать новый тип объекта описания, который содержит необходимые подполя, например:
class ProductDescription(graphene.ObjectType):
    productInfo1 = graphene.String()
    productInfo2 = graphene.String()
    productInfo3 = graphene.String()
Установите поле description с новым типом в Product type:
class Product(CountableDjangoObjectType):
    ...
    description = graphene.Field(ProductDescription)
Добавить распознаватель для description в типе Product:
def resolve_description(self, info):
    return ProductDescription(
        productInfo1=self.description,
        productInfo2='Some additional info',
        productInfo3='Some more additional info',
    )

API-интерфейс GraphQL от Продавца основан на графене .Вы можете найти больше информации о преобразователях и типах объектов здесь: https://docs.graphene -python.org / ru / latest / types / objecttypes / # resolvers .

...