首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

可以通过以下步骤实现:

  1. 首先,你需要在Django的模型中定义你的自定义对象。假设你有一个名为Category的模型,它有一个名为name的字段,用于存储类别名称。你可以在models.py文件中添加以下代码来定义该模型:
代码语言:txt
复制
from django.db import models

class Category(models.Model):
    name = models.CharField(max_length=255)

    def __str__(self):
        return self.name
  1. 接下来,你需要创建一个GraphQL类型来映射Category模型。你可以在schema.py文件中添加以下代码来定义该类型:
代码语言:txt
复制
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的解析器函数来获取所有的类别。

  1. 最后,你需要在urls.py文件中将GraphQL视图与URL进行关联。你可以添加以下代码来完成这一步骤:
代码语言:txt
复制
from django.urls import path
from graphene_django.views import GraphQLView

urlpatterns = [
    path("graphql/", GraphQLView.as_view(graphiql=True)),
]

现在,你可以通过访问/graphql/来执行GraphQL查询,并获取带有分组计数的类别列表。以下是一个示例查询:

代码语言:txt
复制
query {
  categories {
    id
    name
    count
  }
}

以上是在graphene-django中创建自定义对象以返回分组计数的完整步骤。对于这个问题,你可以直接使用上述内容作为答案。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

用 GraphQL 查询你的 Django 应用

django-rest-framework 为例,我们都会定义一个 Serializer 来声明它的输入和输出。...但是也许某一天,我们需要一个评论的精简列表的 API,当前返回内容,除了 content 以外的其他字段都变成多余了,那么后端开发需要重新定一个 MinimalCommentSerializer 来满足新的需求... REST 基础,我们增加了 fields 参数,并在 DRF Serializer 里做了特殊处理(你可以点击查看源码),实现的具体效果: # 查询 comment,并限制结果返回字段 /api/... REST ,为了这个需求我们可能会额外为 /users 增加一个参数 with_comments # 查询 users,并限制结果返回字段 /api/users?...comments = DjangoListObjectField(CommentListType, description="Query all comments") 支持复杂过滤查询 可以列表对象增加

2K60
  • Flink DataStream编程指南

    如果您从程序创建了一个JAR文件,并通过命令行调用它,Flink集群管理器将执行您的main方法,而getExecutionEnvironment()将返回一个集群上执行程序的执行环境。...根据ExecutionEnvironment的类型,执行将在本地机器上触发或提交程序集群上执行。 execute()方法返回一个JobExecutionResult,它包含执行时间和累加器结果。...因此,您不需要将数据集类型物理打包到键和值。Keys是“虚拟”:它们被定义为实际数据的函数,指导分组运算符。...您可以使用它来计算值的分布,例如,一个单词计数程序的每行字的分布。 1,累加器使用 首先,您必须在用户定义的转换函数创建一个累加器对象(这里是一个计数器)。...this.numLines.add(1); 这个结果结果将存储在从执行环境的execute()方法返回的JobExecutionResult对象(目前这仅在执行等待完成作业时才起作用)。

    4.3K70

    Java并发编程,看这篇就够了!

    如上图所示,Java内存模型,对于用户程序来说用得最频繁的就是堆内存和栈内存,其中堆内存主要存放对象及数组,例如由new()产生的实例。...其中堆内存是线程共享的,一个类被实例化后生成的对象、及对象定义的成员变量可以被多个线程共享访问,这种共享主要体现在多个线程同时执行、同一个对象实例的某个方法时,会将该方法操作的对象成员变量分别多个副本的方式拷贝到方法栈中进行操作...线程池的使用 实际场景,多线程的使用并不是单打独斗,线程作为宝贵的系统资源,其创建和销毁都需要耗费一定的系统资源;而无限制的创建线程资源,也会导致系统资源的耗尽。...FutureTask实现异步结果返回 使用Thread或Runnable实现的线程处理,一般是不能返回线程处理结果的。...,则可以通过分组的方式并行处理,而等待所有线程处理完成后,再同步返回调用方。

    1K20

    Python | Python交互之mongoDB交互详解

    this.age>30;} }) mongodb投影 投影:查询结果只显示你想要看到的数据字段内容。...修改输出文档的结构, 如重命名、 增加、 删除字段、 创建计算结果 $sort: 将输出文档排序后输出 $limit: 限制聚合管道返回的文档数 $skip: 跳过指定数量的文档, 并返回余下的文档 $...push: 结果文档插入值到一个数组 $first: 根据资源文档的排序获取第一个文档数据 $last: 根据资源文档的排序获取最后一个文档数据 聚合之$group group:将文档进行分组以便于统计数目...skip:跳过指定数量的文档数,返回剩下的文档 举个栗子: #查询age大于20 #按照hometown分组,并计数 #按照计数升序排序 #跳过前一个文档,返回第二个 db.xianyu.aggregate...备份数据所在位置 mongodb与python交互 安装与导入 安装:pip install pymongo 导入模块:from pymongo import MongoClient 实例化 实例化对象链接数据库

    8K30

    ThinkPHP-PHP开发的主流框架

    s=模块名/方法名/键 1/值 1/键 2/值 2 ④ TP 的几种输出方式 ThinkPHP 的输出: a、通过 echo 等 PHP 原生的输出方式页面输出 b、通过 display 方法输出...,字符串形式返回 $content=$this->fetch(‘Public:error’); c、show 方法 不需要模板文件,可以直接输出模板内容 $content=$this->fetch...’); 参数说明: 第一个参数:要跳转的链接地址 第二个参数:传递的参数,要求格式为数组 第三个参数:等待时间 第四个参数:输出信息 ⑧ 字段映射 使用 create 方法完成数据对象创建,则表单里面文本域名称必须要和数据表的字段名称一致...该功能需要在自定义模型里面定义 ⑨ 模型连贯操作 语法:$model->方法 1()->方法 2()->方法 n()->select(); ⑩ 自动验证 主要是验证表单提交的数据的合法性,验证表单数据的合法性...,是 ThinkPHP 框架对 Model 类实例化的一种封装,并实现了单例模式,支持跨项目和分组调用,调用格式如下:D(‘[项目://][分组/]模型’,’模型层名称’),方法的返回值是实例化的模型对象

    2.8K40

    C#3.0新增功能09 LINQ 标准查询运算符 04 运算

    作为参数传递到 SelectMany() 的转换函数必须为每个源值返回一个可枚举值序列。 然后,SelectMany() 串联这些可枚举序列,创建一个大的序列。...面向对象的编程,这可能意味着未建模对象之间进行关联,例如对单向关系进行反向推理。...用关系数据库术语表达,就是说 Join 实现了内部联接,这种联接只返回那些另一个数据集中具有匹配项的对象。...如何:执行分组联接 如何:执行内部联接 如何:执行左外部联接 如何:从多个源填充对象集合 (LINQ) (C#) 08 数据分组 分组是指将数据分到不同的组,使每组的元素拥有公共的属性。...如何:按扩展名对文件进行分组 (LINQ) (C#) 如何:对查询结果进行分组 如何:对分组操作执行子查询 如何:使用组将一个文件拆分成多个文件 (LINQ) (C#) 09 生成运算 生成是指创建新的值序列

    9.7K20

    java8 groupingby_Java8stream利用groupingBy进行多字段分组求和

    对集合按照单个属性分组分组计数、排序 List items = Arrays.asList(“apple”, “apple”, “banana”, “apple”, “orange”, “banana...orange=[orange], banana=[banana, banana], apple=[apple, apple, apple]} System.out.println(result1); // 分组计数...我没有资源或需求将它们原始格式存储在数据库,因此我希望预先计算聚合并将聚合的数据放在数据库。...我想知道是否有更好的方法来展开嵌套的映射,或者是否有一个库允许您对集合进行分组。 最佳答案 您应该为地图创建自定义密钥。...不是很面向对象,但很简单。或者,您可以定义自己的表示自定义键的类型,并创建适当的hashCode/equals实现。

    1.7K10

    个人永久性免费-Excel催化剂功能第37波-把Sqlserver的强大分析函数拿到Excel中用

    背景介绍 自从Excel催化剂推出了可返回多值的自定义函数,函数的使用上已经突破了许多过往很难想像的功能突破,例如在过往教程中经常使用到的GetFiles函数,上一波的序列函数等。...只需一次计算就立马返回所有运算结果值。对于性能的提升也是立竿见影。如传统一个数据表中加入SUMIF、COUTIF等函数,之所以每每运算效率低下,是因为其不断地每一行做了大量的重复计算。...今天推出的众多分组计算函数,同样采用了一次返回多值的方式,计算上仅需只算一次,对数据量大的情况下,性能改善明显。 ?...数组函数扩展功能 分组计数 类似COUNTIF函数的效果,若分组列为多列时,类似COUNTIFS函数的效果,但性能更优,因一次性返回多值,仅一次运算即可。 ? 分组计数函数,分组列为一列 ?...分组列为两列时的效果 分组序号 分组序号函数特点,分组内的记录数,每一行返回从1开始的不重复的递增的序列,基于排序列定义的顺序,分组列,排序列可以为多列,当排序规则下的排序列相同,将从上往下填充递增序号

    1.8K20

    Java8 stream 利用 groupingBy 进行多字段分组求和

    Java8的groupingBy实现集合的分组,类似Mysql的group by分组功能,注意得到的是一个map 对集合按照单个属性分组分组计数、排序 List items =...orange=[orange], banana=[banana, banana], apple=[apple, apple, apple]} System.out.println(result1); // 分组计数...我没有资源或需求将它们原始格式存储在数据库,因此我希望预先计算聚合并将聚合的数据放在数据库。...我想知道是否有更好的方法来展开嵌套的映射,或者是否有一个库允许您对集合进行分组。 最佳答案 您应该为地图创建自定义密钥。...不是很面向对象,但很简单。或者,您可以定义自己的表示自定义键的类型,并创建适当的hashCode/equals实现。

    5K30

    Spring认证中国教育管理中心-Spring Data MongoDB教程七

    使用 group 操作确实有一些限制,例如它在共享环境不受支持,它返回单个 BSON 对象的完整结果集,因此结果应该很小,少于 10,000 个键。...Spring 通过 MongoOperations 上提供方法来提供与 MongoDB 的组操作的集成,简化组操作的创建和运行。...它提供对原始聚合结果的访问,Document映射对象和有关聚合的其他信息的形式。...您可以使用and()方法使用多个聚合管道对其进行自定义。每个子管道输出文档中都有自己的字段,其结果存储为文档数组。 子管道可以分组之前投影和过滤输入文档。常见用例包括分类之前提取日期部分或计算。...按计数排序 按计数排序操作根据指定表达式的值对传入文档进行分组,计算每个不同组的文档计数,并按计数对结果进行排序。它提供了使用分面分类时应用排序的便捷快捷方式。

    8.1K30

    Flink 窗口之Window机制

    在这篇文章,我们主要讨论用于流处理的窗口的概念,介绍 Flink 的内置窗口,并说明其对自定义窗口语义的支持。 1. 什么是窗口?它们有什么用?...像这样的流永远都不会结束,更不可能计算出可以返回的最终和。换一种思路,我们可以滚动计算总和,即为每个输入事件返回一个更新的总和记录。... Flink ,我们将这种分区的窗口简称为 Windows,因为它们是分布式流的常见情况。下图显示了 (sensorId, count) 流上的滚动窗口。... Flink 的 DataStream API ,滚动和滑动计数窗口如下定义: // Stream of (sensorId, carCnt) DataStream<Tuple2<String,...WindowAssigner 将元素分配给一个或多个窗口,也可能会创建新的窗口。窗口本身只是一系列元素的标识符,并且可以提供一些可选的元信息,例如,使用 TimeWindow 时的开始和结束时间。

    1.3K20

    最全面的Pandas的教程!没有之一!

    事实上,Series 基本上就是基于 NumPy 的数组对象来的。和 NumPy 的数组不同,Series 能为数据自定义标签,也就是索引(index),然后通过索引来访问数组的数据。 ?...如上,如果 Pandas 两个 Series 里找不到相同的 index,对应的位置就返回一个空值 NaN。...上面的结果,Sales 列就变成每个公司的分组平均数了。 计数 用 .count() 方法,能对 DataFrame 的某个元素出现的次数进行计数。 ?...此外,还可以用 .value_counts() 同时获得所有值和对应值的计数: ? apply() 方法 用 .apply() 方法,可以对 DataFrame 的数据应用自定义函数,进行数据处理。...然后我们将这个 DataFrame 对象存成 'New_dataframe' 文件,Pandas 会自动磁盘上创建这个文件。 ?

    25.9K64

    Storm介绍及原理

    bolt和spout组件先进行序列化,然后发送到集群, * 如果在序列化之前创建过任何无法序列化的对象都会造成序列化时抛出NotSerializableException。...,当接收到一个tuple时,上报Bolt会更新表计数数据,并将值打印到终端。...builder.setBolt("report_bolt", reportBolt).globalGrouping("word_count_bolt"); //--创建配置对象 Config...config = new Config(); //--创建代表集群的对象,LocalCluster表示本地开发环境来模拟一个完整的Storm集群 //本地模式是开发和测试的简单方式,省去了分布式集群反复部署的开销...8.自定义     另外可以自定义数据流分组方式     写类实现CustomStreamGrouping接口     代码: /** * 自定义数据流分组方式 * @author park * */

    5K80

    spring4.1.8扩展实战之四:感知spring容器变化(SmartLifecycle接口)

    实现类的执行顺序(stop也是)isAutoStartup()start方法被执行前先看此方法返回值,返回false就不执行start方法了stop(Runnable)容器关闭后: spring容器发现当前对象实现了...将所有的Lifecycle实例按照phase分组; 3. 从phase值最大的分组开始,依次执行其中每个Lifecycle对象的stop方法; 4....对每个SmartLifecycle实例,若想并行执行加快stop执行速度,可以stop方法中用新的线程来执行stop业务逻辑,但是最后不要忘记调用Runnable入参的run方法,完成主线程的计数和统计...,并在springboot验证以下; 实战SmartLifecycle接口扩展 本次实战的内容是创建一个springboot工程,在里面自定义一个SmartLifecycle接口的实现类,如果您不想敲代码...创建自定义SmartLifecycle实现类CustomizeLifeCycleLinstener.java,主要代码都有注释说明,就不多赘述了,前面咱们分析的几个调用方法都有日志打印,便于执行的时候观察

    51220

    Pandas速查手册中文版

    (1)官网: Python Data Analysis Library (2)十分钟入门Pandas: 10 Minutes to pandas 第一次学习Pandas的过程,你会发现你需要记忆很多的函数和方法...格式导出数据到文本文件 创建测试对象 pd.DataFrame(np.random.rand(20,5)):创建20行5列的随机数组成的DataFrame对象 pd.Series(my_list):从可迭代对象...):查看DataFrame对象每一列的唯一值和计数 数据选取 df[col]:根据列名,并以Series的形式返回列 df[[col1, col2]]:DataFrame形式返回多列 s.iloc[...'a','b','c']:重命名列名 pd.isnull():检查DataFrame对象的空值,并返回一个Boolean数组 pd.notnull():检查DataFrame对象的非空值,并返回一个...col进行分组的Groupby对象 df.groupby([col1,col2]):返回一个按多列进行分组的Groupby对象 df.groupby(col1)[col2]:返回按列col1进行分组后,

    12.2K92
    领券