标签: graphene-python

设置一个普通的石墨烯嵌套查询

我已经成功创建了一个响应于的全石墨烯查询

query {
    person (id: "Mary") {
        id
        name
    }
}
Run Code Online (Sandbox Code Playgroud)

我现在想扩展它,以便能够遍历所有人并为每个人返回相似的数据。

query {
    people {
        count
        allPersons {
           name
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何让resolve_allPersons在解析器people调用person每个人解析器?

python graphene-python

2
推荐指数
1
解决办法
2482
查看次数

如何解决石墨烯中带有下划线的字段?

我有一个领域 _id

class Article(graphene.ObjectType):
    _id = graphene.Int()
    article_id = graphene.Int()

    def resolve__id(self, info):
        return self.article_id
Run Code Online (Sandbox Code Playgroud)

这是行不通的,它将解释_idId

graphql graphene-python

2
推荐指数
1
解决办法
426
查看次数

针对 django graphene 上的 graphql 查询返回带注释的查询集

class Project(models.Model):
    name = models.CharField(max_length=189)

class Customer(models.Model):
    name = models.CharField(max_length=189)
    is_deleted = models.BooleanField(default=False)
    project = models.ForeignKey(Project, related_name="customers")

class Message(models.Model):
    message = models.TextField()
    customer = models.ForeignKey(Customer, on_delete=models.CASCADE, related_name="messages")
    created_at = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

我正在使用以下查询集来获取某个项目下的所有客户,该项目由最后发消息的人订购。

qs = Customer.objects.filter(messages__isnull=False) \
.annotate(last_message=Max('messages__created_at')).order_by('-last_message')
Run Code Online (Sandbox Code Playgroud)

现在我想使用基本的石墨烯查询(不是中继)来根据带注释的查询集获取项目以及与该项目关联的客户。我可能还有第二个用例,我需要根据 Customer 表中的字段(例如 is_deleted=False 的客户)过滤 project.customers.all() 查询集。

目前在我的 graphql 模式中,

class ProjectNode(DjangoObjectType):
    class Meta:
        model = Project

class CustomerNode(DjangoObjectType):
    class Meta:
        model = Customer

class Query(graphene.ObjectType):
    project = graphene.Field(ProjectNode, id=graphene.Int(), token=graphene.String(), )
    top_chat_customers = graphene.Field(CustomerNode, project_id=graphene.Int())

     def resolve_project(self, info, **kwargs):
        pk = kwargs["id"]
        return …
Run Code Online (Sandbox Code Playgroud)

django graphql django-annotate graphene-python

2
推荐指数
1
解决办法
2169
查看次数

Apollo客户端在向服务器发送突变时返回“ 400(错误请求)错误”

我目前正在为Apollo客户端使用vue-apollo包,并为我的GraphQl API使用带有django和graphene-python的VueJs堆栈。

我在下面用vue-apollo进行了简单的设置:

import Vue from 'vue'
import { ApolloClient } from 'apollo-client'
import { HttpLink } from 'apollo-link-http'
import { InMemoryCache } from 'apollo-cache-inmemory'
import VueApollo from 'vue-apollo'
import Cookies from 'js-cookie'


const httpLink = new HttpLink({
  credentials: 'same-origin',
  uri: 'http://localhost:8000/api/',
})

// Create the apollo client
const apolloClient = new ApolloClient({
  link: httpLink,
  cache: new InMemoryCache(),
  connectToDevTools: true,
})

export const apolloProvider = new VueApollo({
  defaultClient: apolloClient,
})

// Install the vue plugin
Vue.use(VueApollo)
Run Code Online (Sandbox Code Playgroud)

我还settings.py …

django apollo vue.js graphql graphene-python

2
推荐指数
2
解决办法
4814
查看次数

graphene-django 将 models.BigInteger() 转换为 graphene.Integer()

我正在使用石墨烯-django。

我正在尝试从models.BigInteger()字段中检索数据,但是当我在 graphiQL 中进行查询时出现错误

{
  "errors": [
    {
      "message": "Int cannot represent non 32-bit signed integer value: 2554208328"
    }
  ],
  "data": {
    "match": null
  }
}
Run Code Online (Sandbox Code Playgroud)

有谁知道我如何强迫石墨烯给我数据?

django graphql graphene-python

1
推荐指数
1
解决办法
1357
查看次数

Graphene Python列表为所有字段解析null

我在python中使用GraphQL尝试解析列表数据,但字段正在解析为null.如何让他们返回实际的列表数据?

这是我的代码片段

import graphene


class User(graphene.ObjectType):
    """ Type definition for User """
    id = graphene.Int()
    username = graphene.String()
    email = graphene.String()

class Query(graphene.ObjectType):
    users = graphene.List(User)

    def resolve_users(self, args):
        resp = [{'id': 39330, 'username': 'RCraig', 'email': 
                 'WRussell@dolor.gov', 'teamId': 0}, {'id': 39331, 
                 'username': 'AHohmann','email': 'AMarina@sapien.com', 
                 'teamId': 0}]
        return  resp

schema = graphene.Schema(query=Query)
Run Code Online (Sandbox Code Playgroud)

该片段可以在石墨烯操场上进行测试

这是我当前的查询 询问

和不希望的反应 graphQL响应

python graphql graphene-python

1
推荐指数
1
解决办法
1687
查看次数

如何限制来自GraphQL API端点的匿名用户?

Django有两种方法。

  1. 常规DRF将用户限制在中间件级别。因此,未登录的用户无法访问任何内容。

  2. 相反,GraphQL使用“每个方法”方法。因此中间件传递所有请求和每种方法。但是之后方法调用装饰器。

我想实现第一种方法,但要使用GraphQL。但是在那种情况下,我需要打开登录突变的路径。如何从有效载荷中提取突变名称?

authentication django django-rest-framework graphql graphene-python

1
推荐指数
1
解决办法
717
查看次数

石墨烯Django:更改字段名称

如果我有一个Django模型,其中的字段名称是这样的法语(nomname的法语翻译):

class Categorie(models.Model):
    nom = models.CharField(max_length=100)

    def __str__(self):
        return self.nom
Run Code Online (Sandbox Code Playgroud)

是否可以使用Graphene Django配置GraphQL查询,以便使用字段的英语翻译查询图形(使用名称代替nom):

query {
  allCategories {
    id
    name
  }
}  
Run Code Online (Sandbox Code Playgroud)

谢谢,

django graphql graphene-python

1
推荐指数
1
解决办法
407
查看次数

GraphQL:查询和变异可以拆分成单独的类吗?

在我的 Graphene-Django 项目中,我有这样的结构:

项目级别:

schema.py
Run Code Online (Sandbox Code Playgroud)

应用级别:

schema.py
queries.py
mutations.py
Run Code Online (Sandbox Code Playgroud)

这很有效,但查询文件已经变得非常大。有没有办法将类 Query拆分为多个类和/或多个文件?

罗伯特

django graphql graphene-python

0
推荐指数
1
解决办法
1287
查看次数

使用石墨烯中继创建订阅

我是 graphQL 石墨烯(python)的新手。我想知道是否可以使用石墨烯创建订阅根类型。谢谢

graphql graphene-python graphql-subscriptions graphql-mutation

0
推荐指数
1
解决办法
2358
查看次数