當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。