当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Django Greatest用法及代码示例


本文介绍 django.db.models.functions.Greatest 的用法。

声明

class Greatest(*expressions, **extra)

接受至少两个字段名称或表达式的列表并返回最大值。每个参数必须是相似的类型,因此混合文本和数字将导致数据库错误。

使用示例:

class Blog(models.Model):
    body = models.TextField()
    modified = models.DateTimeField(auto_now=True)

class Comment(models.Model):
    body = models.TextField()
    modified = models.DateTimeField(auto_now=True)
    blog = models.ForeignKey(Blog, on_delete=models.CASCADE)

>>> from django.db.models.functions import Greatest
>>> blog = Blog.objects.create(body='Greatest is the best.')
>>> comment = Comment.objects.create(body='No, Least is better.', blog=blog)
>>> comments = Comment.objects.annotate(last_updated=Greatest('modified', 'blog__modified'))
>>> annotated_comment = comments.get()

annotated_comment.last_updated 将是最新的 blog.modifiedcomment.modified

警告

当一个或多个表达式可能是 null 时,Greatest 的行为因数据库而异:

  • PostgreSQL: Greatest 将返回最大的非空表达式,如果所有表达式都是 null ,则返回 null
  • SQLite、Oracle 和 MySQL:如果任何表达式是 nullGreatest 将返回 null

PostgreSQL 行为可以使用Coalesce 来模拟,如果您知道一个合理的最小值作为默认值提供。

相关用法


注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.db.models.functions.Greatest。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。