【问题标题】:GraphQL error: int() argument must be a string or a number, not 'list'GraphQL 错误:int() 参数必须是字符串或数字,而不是“列表”
【发布时间】:2020-11-19 00:50:44
【问题描述】:

我有这个突变:

export const SET_CART_MUTATION = gql`mutation setCartMutation($vendorSlug: String!, $sessionId: String, $productId:[Int!], $prices:[PriceInput]) {
  setCart(vendorSlug: $vendorSlug, sessionId: $sessionId, productId:$productId, prices:$prices) {
    cart {
      ${CART_FIELDS}
    }
    allTicketsAdded
  }
}`

我想创建一个 productId 数组,但是当我发生变异时:我得到:

Mutation error: Error: GraphQL error: int() argument must be a string or a number, not 'list'

我的 setCart 课程是:

class SetCart(graphene.Mutation):
    class Arguments:
        vendor_slug = graphene.String()
        session_id = graphene.String()
        product_id = graphene.List(graphene.Int)
        prices = graphene.List(PriceInput)

感谢您的帮助,并提出问题。

【问题讨论】:

  • 你传递给突变的查询参数是什么?我的意思是,所有突变参数的值。
  • 我解决了,问题出在突变函数中,而不是在参数中
  • 很高兴您解决了它,如果您分享解决方案以便其他人可以看到问题所在,那就太好了 :)

标签: python graphql graphene-python


【解决方案1】:

我解决了,

如果您有同样的错误,并且您确定突变参数与声明的类型相同:问题来自您的突变函数:

def mutate(self, info, vendor_slug, session_id, products, prices, participants):
        # ? List of products given
        products = Product.objects.get(id=product)
        cart = Order.objects.get_cart(
            vendor_slug, info.context.user, session_id)

错误来自Product.objects.get(id=product) 因为产品是一个数组 更正:

products = [Product.objects.get(id=product) for product in products]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-30
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    相关资源
    最近更新 更多