当前位置: 首页 > 面试题库 >

Django的注释方法和聚合方法之间的区别?

汤昊
2023-03-14
问题内容

Django QuerySet有两种方法,annotateaggregate。该文档说:

与gregation()不同,annotate()不是终端子句。annotate()子句的输出是QuerySet。

它们之间还有其他区别吗?如果没有,那为什么aggregate存在呢?


问题答案:

我将重点放在示例查询而不是文档中的引用上。Aggregate计算整个查询集的值。Annotate计算查询集中每个项目的汇总值。

聚合

>>> Book.objects.aggregate(average_price=Avg('price'))
{'average_price': 34.35}

返回包含查询集中所有书籍的平均价格的字典。

注解

>>> q = Book.objects.annotate(num_authors=Count('authors'))
>>> q[0].num_authors
2
>>> q[1].num_authors
1

q 是书籍的查询集,但每本书都注明了作者人数。



 类似资料:
  • 问题内容: 之间有什么区别 和 问题答案: 在Django的查询集文档都对这个很清楚的: 返回与给定查找参数匹配的对象,该参数应采用“字段查找”中所述的格式。 如果找到多个对象,则get()会引发MultipleObjectsReturned。MultipleObjectsReturned异常是模型类的属性。 如果找不到给定参数的对象,则get()会引发DidNotExist异常。此异常也是模型类

  • 我正在学习基于Django的课堂观点。我正在阅读Django文档,了解了queryset属性和get_queryset()方法。在谷歌搜索它们时,我发现了这个答案。 我试图用我的代码复制结果: 在回答中提到,当您设置queryset时,只在启动服务器时创建一次queryset。另一方面,对每个请求都调用get_queryset方法。 但是我可以在数据库中插入问题,并且它们可以在页面index2.h

  • 问题内容: 用修饰的功能和用修饰的功能有什么区别? 问题答案: 也许有点示例代码将有助于:发现其中的差别在调用签名,并且: 以下是对象实例调用方法的常用方法。对象实例,a作为第一个参数隐式传递。 使用时,对象实例的类作为第一个参数而不是隐式传递。 你也可以使用该类进行呼叫。实际上,如果你将某些东西定义为类方法,则可能是因为你打算从类而不是从类实例调用它。本来会引发,但效果很好: 人们发现类方法的一

  • 问题内容: 我只是在阅读教科书中给我的课文,我不确定自己是否明白我在说什么。这基本上是在告诉我静态方法或类方法包括关键字“修饰符” static。但是我真的不知道那意味着什么吗? 有人可以简单地向我解释什么是静态方法或类方法吗? 另外,我可以简单解释一下什么是Instance方法吗? 这是他们在教科书中给我的: 存在或不存在静态修饰符具有重要的实际意义。一旦Java处理了它所属的类的定义,就可以调

  • 问题内容: 我知道,无论与就将计算在东西在AngularJS变化。但是无法理解两者之间到底有什么区别。 我最初的理解是为角表达式计算的,这些角表达式是HTML端在执行函数时所执行的条件。我的想法是否正确? 问题答案: $observe() 是Attributes对象上的一种方法,因此,它只能用于观察/监视DOM属性的值更改。仅用于/调用内部指令。当您需要观察/观察包含插值的DOM属性(即{{}})

  • 问题内容: 我在阅读PEP 0008(样式指南)时,发现它建议在实例方法中使用self作为第一个参数,而在类方法中使用cls作为第一个参数。 我已经使用并编写了一些类,但从未遇到过类方法(嗯,一种将cls作为参数传递的方法)。有人可以告诉我一些例子吗? 谢谢! 问题答案: 实例方法 创建实例方法时,第一个参数始终为。您可以随意命名,但含义始终相同,并且由于其是命名约定,因此应使用。 (通常)在调用