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


Python Django Index.expressions用法及代碼示例


本文介紹 django.db.models.Index.expressions 的用法。

聲明

Index.expressions
Django 3.2 中的新函數。

位置參數*expressions 允許在表達式和數據庫函數上創建函數索引。

例如:

Index(Lower('title').desc(), 'pub_date', name='lower_title_date_idx')

以降序對title 字段的小寫值創建索引,並以默認升序對pub_date 字段創建索引。

另一個例子:

Index(F('height') * F('weight'), Round('weight'), name='calc_idx')

為字段heightweight 相乘的結果創建索引,並將weight 四舍五入到最接近的整數。

使用 *expressions 時需要 Index.name

對 Oracle 的限製

Oracle 要求將索引中引用的函數標記為 DETERMINISTIC 。 Django 不驗證這一點,但 Oracle 會出錯。這意味著不接受 Random() 等函數。

PostgreSQL 的限製

PostgreSQL 要求將索引中引用的函數和運算符標記為 IMMUTABLE 。 Django 不會驗證這一點,但 PostgreSQL 會出錯。這意味著不接受 Concat() 等函數。

MySQL 和 MariaDB

MySQL < 8.0.13 和 MariaDB 將忽略函數索引,因為它們都不支持。

相關用法


注:本文由純淨天空篩選整理自djangoproject.com大神的英文原創作品 django.db.models.Index.expressions。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。