Graphene Django 中的 DjangoListField() 与 graphene.List()
DjangoListField() vs graphene.List() in Graphene Django
我同时使用了 "DjangoListField()" 和 "graphene.List()" 和 列出所有对象的解析器.
schema.py中的“DjangoListField()”:
import graphene
from graphene_django import DjangoObjectType
from graphene_django import DjangoListField
from .models import Category
class CategoryType(DjangoObjectType):
class Meta:
model = Category
fields = ("id","name")
class Query(graphene.ObjectType):
all_categories = DjangoListField(CategoryType) # DjangoListField()
def resolve_all_categories(root, info): # Resolver to list all objects
return Category.objects.all()
schema = graphene.Schema(query=Query)
"graphene.List()" 在 schema.py:
import graphene
from graphene_django import DjangoObjectType
from .models import Category
class CategoryType(DjangoObjectType):
class Meta:
model = Category
fields = ("id","name")
class Query(graphene.ObjectType):
all_categories = graphene.List(CategoryType) # graphene.List()
def resolve_all_categories(root, info): # Resolver to list all objects
return Category.objects.all()
schema = graphene.Schema(query=Query)
然后,我一一查询了"allCategories"上面schema.py中的两个代码:
query {
allCategories {
id
name
}
}
但是结果是一样的列出所有对象:
{
"data": {
"allCategories": [
{
"id": "1",
"name": "category1"
},
{
"id": "2",
"name": "category2"
}
]
}
}
"DjangoListField()" 和 "graphene.List()"?[=15= 有什么区别]
"DjangoListField()" 具有 列出所有对象的默认解析器 但 "graphene.List ()" 没有,所以对于 "graphene.List()",您需要 显式定义 Resolver 以列出所有objects 否则你会得到 "null".
因此,如果您使用 "DjangoListField()":
从代码中删除 Resolver
import graphene
from graphene_django import DjangoObjectType
from graphene_django import DjangoListField
from .models import Category
class CategoryType(DjangoObjectType):
class Meta:
model = Category
fields = ("id","name")
class Query(graphene.ObjectType):
all_categories = DjangoListField(CategoryType) # DjangoListField()
schema = graphene.Schema(query=Query)
然后,你查询"allCategories":
query {
allCategories {
id
name
}
}
最后,您仍然可以列出所有对象:
{
"data": {
"allCategories": [
{
"id": "1",
"name": "category1"
},
{
"id": "2",
"name": "category2"
}
]
}
}
但是,如果您使用 "graphene.List()":
从代码中删除 Resolver
import graphene
from graphene_django import DjangoObjectType
from .models import Category
class CategoryType(DjangoObjectType):
class Meta:
model = Category
fields = ("id","name")
class Query(graphene.ObjectType):
all_categories = graphene.List(CategoryType) # graphene.List()
schema = graphene.Schema(query=Query)
然后,你查询"allCategories":
query {
allCategories {
id
name
}
}
最后,您不能列出所有对象,而是得到"null":
{
"data": {
"allCategories": null
}
}
您可以在此页面 DjangoListField.
中获得有关 “DjangoListField()” 的更多详细信息
我同时使用了 "DjangoListField()" 和 "graphene.List()" 和 列出所有对象的解析器.
schema.py中的“DjangoListField()”:
import graphene
from graphene_django import DjangoObjectType
from graphene_django import DjangoListField
from .models import Category
class CategoryType(DjangoObjectType):
class Meta:
model = Category
fields = ("id","name")
class Query(graphene.ObjectType):
all_categories = DjangoListField(CategoryType) # DjangoListField()
def resolve_all_categories(root, info): # Resolver to list all objects
return Category.objects.all()
schema = graphene.Schema(query=Query)
"graphene.List()" 在 schema.py:
import graphene
from graphene_django import DjangoObjectType
from .models import Category
class CategoryType(DjangoObjectType):
class Meta:
model = Category
fields = ("id","name")
class Query(graphene.ObjectType):
all_categories = graphene.List(CategoryType) # graphene.List()
def resolve_all_categories(root, info): # Resolver to list all objects
return Category.objects.all()
schema = graphene.Schema(query=Query)
然后,我一一查询了"allCategories"上面schema.py中的两个代码:
query {
allCategories {
id
name
}
}
但是结果是一样的列出所有对象:
{
"data": {
"allCategories": [
{
"id": "1",
"name": "category1"
},
{
"id": "2",
"name": "category2"
}
]
}
}
"DjangoListField()" 和 "graphene.List()"?[=15= 有什么区别]
"DjangoListField()" 具有 列出所有对象的默认解析器 但 "graphene.List ()" 没有,所以对于 "graphene.List()",您需要 显式定义 Resolver 以列出所有objects 否则你会得到 "null".
因此,如果您使用 "DjangoListField()":
从代码中删除 Resolverimport graphene
from graphene_django import DjangoObjectType
from graphene_django import DjangoListField
from .models import Category
class CategoryType(DjangoObjectType):
class Meta:
model = Category
fields = ("id","name")
class Query(graphene.ObjectType):
all_categories = DjangoListField(CategoryType) # DjangoListField()
schema = graphene.Schema(query=Query)
然后,你查询"allCategories":
query {
allCategories {
id
name
}
}
最后,您仍然可以列出所有对象:
{
"data": {
"allCategories": [
{
"id": "1",
"name": "category1"
},
{
"id": "2",
"name": "category2"
}
]
}
}
但是,如果您使用 "graphene.List()":
从代码中删除 Resolverimport graphene
from graphene_django import DjangoObjectType
from .models import Category
class CategoryType(DjangoObjectType):
class Meta:
model = Category
fields = ("id","name")
class Query(graphene.ObjectType):
all_categories = graphene.List(CategoryType) # graphene.List()
schema = graphene.Schema(query=Query)
然后,你查询"allCategories":
query {
allCategories {
id
name
}
}
最后,您不能列出所有对象,而是得到"null":
{
"data": {
"allCategories": null
}
}
您可以在此页面 DjangoListField.
中获得有关 “DjangoListField()” 的更多详细信息