我已经成功创建了一个响应于的全石墨烯查询
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每个人解析器?
我有一个领域 _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)
这是行不通的,它将解释_id为Id。
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) 我目前正在为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。
我正在尝试从models.BigInteger()字段中检索数据,但是当我在 graphiQL 中进行查询时出现错误
{
"errors": [
{
"message": "Int cannot represent non 32-bit signed integer value: 2554208328"
}
],
"data": {
"match": null
}
}
Run Code Online (Sandbox Code Playgroud)
有谁知道我如何强迫石墨烯给我数据?
我在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)
该片段可以在石墨烯操场上进行测试
Django有两种方法。
常规DRF将用户限制在中间件级别。因此,未登录的用户无法访问任何内容。
相反,GraphQL使用“每个方法”方法。因此中间件传递所有请求和每种方法。但是之后方法调用装饰器。
我想实现第一种方法,但要使用GraphQL。但是在那种情况下,我需要打开登录突变的路径。如何从有效载荷中提取突变名称?
authentication django django-rest-framework graphql graphene-python
如果我有一个Django模型,其中的字段名称是这样的法语(nom是name的法语翻译):
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)
谢谢,
在我的 Graphene-Django 项目中,我有这样的结构:
项目级别:
schema.py
Run Code Online (Sandbox Code Playgroud)
应用级别:
schema.py
queries.py
mutations.py
Run Code Online (Sandbox Code Playgroud)
这很有效,但查询文件已经变得非常大。有没有办法将类 Query拆分为多个类和/或多个文件?
罗伯特
我是 graphQL 石墨烯(python)的新手。我想知道是否可以使用石墨烯创建订阅根类型。谢谢
graphql graphene-python graphql-subscriptions graphql-mutation