可以通过以下步骤实现:
Category
的模型,它有一个名为name
的字段,用于存储类别名称。你可以在models.py
文件中添加以下代码来定义该模型:from django.db import models
class Category(models.Model):
name = models.CharField(max_length=255)
def __str__(self):
return self.name
Category
模型。你可以在schema.py
文件中添加以下代码来定义该类型:import graphene
from graphene_django import DjangoObjectType
from django.db.models import Count
from .models import Category
class CategoryType(DjangoObjectType):
class Meta:
model = Category
fields = ("id", "name", "count")
count = graphene.Int()
def resolve_count(self, info):
return self.products.count()
class Query(graphene.ObjectType):
categories = graphene.List(CategoryType)
def resolve_categories(self, info):
return Category.objects.annotate(count=Count("products"))
schema = graphene.Schema(query=Query)
在上面的代码中,我们为CategoryType
添加了一个名为count
的字段,并使用Count
函数对products
进行注释。然后,我们在Query
对象中定义了一个名为categories
的解析器函数来获取所有的类别。
urls.py
文件中将GraphQL视图与URL进行关联。你可以添加以下代码来完成这一步骤:from django.urls import path
from graphene_django.views import GraphQLView
urlpatterns = [
path("graphql/", GraphQLView.as_view(graphiql=True)),
]
现在,你可以通过访问/graphql/
来执行GraphQL查询,并获取带有分组计数的类别列表。以下是一个示例查询:
query {
categories {
id
name
count
}
}
以上是在graphene-django中创建自定义对象以返回分组计数的完整步骤。对于这个问题,你可以直接使用上述内容作为答案。
领取专属 10元无门槛券
手把手带您无忧上云