Список, не связанный с моделями
Поскольку вы хотите вернуть счетчик и список элементов, вы можете создать пользовательский тип:
class ListWithCountType(graphene.Scalar):
@staticmethod
def serialize(some_argument):
# make computation here
count = ...
some_list = ...
return { "count": count, "list": some_list }
Затем вы используете для своей мутации это так:
class MyMutation(graphene.Mutation):
list_with_count = graphene.Field(ListWithCountType)
@classmethod
def mutate(cls, root, info, **kwargs):
some_argument = kwargs.pop("some_argument")
return cls(list_with_count=some_argument)
Добавить в свою схему:
class Query(graphene.ObjectType):
my_mutation = MyMutation.Field()
Должно возвращать что-то вроде:
{
"data": {
"list_with_count": {
"count": <COUNT VALUE>,
"list": <SOME_LIST VALUE>
}
}
}
* PS: если это только выход , Хорошо. Но если вы хотите, чтобы этот тип был аргументом, вы должны также реализовать «parse_literal» и «parse_value», кроме «serialize».
Здесь - это пример с используемым пользовательским ErrorType с формами.
Список, относящийся к моделям
Из документов :
# cookbook/ingredients/schema.py
import graphene
from graphene_django.types import DjangoObjectType
from cookbook.ingredients.models import Category
class CategoryType(DjangoObjectType):
class Meta:
model = Category
class Query(object):
all_categories = graphene.List(CategoryType)
def resolve_all_categories(self, info, **kwargs):
return Category.objects.all()
На вашей схеме:
import graphene
import cookbook.ingredients.schema
class Query(cookbook.ingredients.schema.Query, graphene.ObjectType):
pass
schema = graphene.Schema(query=Query)
Затем вы можете запросить:
query {
allCategories {
id
}
}
Должно вернуть что-то вроде:
{
"data": {
"allCategories": [
{
"id": "1",
},
{
"id": "2",
},
{
"id": "3",
},
{
"id": "4",
}
]
}
}
Вот пример с моделью пользователя .