首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在graphene-django中创建自定义对象以返回分组计数

在graphene-django中创建自定义对象以返回分组计数
EN

Stack Overflow用户
提问于 2021-10-05 18:32:19
回答 1查看 99关注 0票数 0

我正在尝试构建一种方法,根据特定的过滤条件返回另一个对象的分组计数。作为示例,给定以下模型和以下示例数据,我想创建一个将返回以下结果的调用:

模型:

代码语言:javascript
复制
class Task(models.Model):
    class Meta:
        db_table = "task"

    id = models.UUIDField(
        db_column="task_id", primary_key=True, default=uuid.uuid4, editable=False
    )
    start_date = models.DateTimeField()
    due_date = models.DateTimeField()
    task_status = models.CharField(max_length=250)
    )

示例数据:

代码语言:javascript
复制
id           start_date     due_date     task_status
624d8126...  2021-01-01     2021-03-02   in progress

171a7969...  2021-03-01     2021-02-28   assigned

92f6e493...  2021-04-01     2021-04-10   completed

a5722f6f...  2021-04-03     2021-04-08   assigned

e884efcb...  2021-05-01     2021-04-30   available

期望的结果(或类似的东西)

代码语言:javascript
复制
getTaskCounts
{
    taskCount
    {
      countType: "behind schedule",
      count: 2
    },
    taskCount
    {
      countType: "in progress",
      count:  2
    },
    taskCount
    {
      countType: "completed",
      count:  1
    }

}

注意,我是根据期望的结果对各种状态进行分组的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-07 04:04:40

您可以像这样定义自定义对象类型:

代码语言:javascript
复制
class TaskCount(graphene.ObjectType):
    count_type = graphene.String()
    count = graphene.Int()

然后定义另一个对象以返回它们的分组列表,如下所示:

代码语言:javascript
复制
from django.db.models import Count

class TaskCounts(graphene.ObjectType):
    task_counts = graphene.List(TaskCount)

    def resolve_task_counts(self, info):
        # Query for grouping -- test in Django shell
        grouped_tasks = Task.objects
            .values('task_status')
            .annotate(count=Count('task_status'))
            .order_by()
        return [
            TaskCount(count_type=grouped_task.task_status, count=grouped_task.count) for grouped_task in grouped_tasks
         ]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69455579

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档