溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Django模型層之字段查詢參數及聚合函數

發布時間:2020-10-18 12:48:16 來源:網絡 閱讀:426 作者:Python熱愛者 欄目:編程語言

字段查詢是指如何指定SQL WHERE子句的內容。它們用作QuerySet的filter(), exclude()和get()方法的關鍵字參數。

默認查找類型為exact。

下表列出了所有的字段查詢參數:


Django模型層之字段查詢參數及聚合函數


1. exact

精確匹配。 默認的查找類型!


Django模型層之字段查詢參數及聚合函數


2. iexact

不區分大小寫的精確匹配。


Django模型層之字段查詢參數及聚合函數


第一個查詢將匹配 'Beatles Blog', 'beatles blog', 'BeAtLes BLoG'等等。

3. contains

大小寫敏感的包含關系匹配。

Entry.objects.get(headline__contains='Lennon')

這將匹配標題'Lennon honored today',但不匹配'lennon honored today'。

4. icontains

不區分大小寫的包含關系匹配。

Entry.objects.get(headline__icontains='Lennon')

5. in

在給定的列表里查找。

Entry.objects.filter(id__in=[1,3,4])

還可以使用動態查詢集,而不是提供文字值列表:


Django模型層之字段查詢參數及聚合函數


或者從values()或values_list()中獲取的QuerySet作為比對的對象:


Django模型層之字段查詢參數及聚合函數


下面的例子將產生一個異常,因為試圖提取兩個字段的值,但是查詢語句只需要一個字段的值:


Django模型層之字段查詢參數及聚合函數


6. gt

大于

Entry.objects.filter(id__gt=4)

7. gte

大于或等于

8. lt

小于

9. lte

小于或等于

10. startswith

區分大小寫,從開始位置匹配。

Entry.objects.filter(headline__startswith='Lennon')

11. istartswith

不區分大小寫,從開始位置匹配。

Entry.objects.filter(headline__istartswith='Lennon')

12. endswith

區分大小寫,從結束未知開始匹配。

Entry.objects.filter(headline__endswith='Lennon')

13. iendswith

不區分大小寫,從結束未知開始匹配。

Entry.objects.filter(headline__iendswith='Lennon')

14. range

范圍測試(包含于之中)。


Django模型層之字段查詢參數及聚合函數


警告:過濾具有日期的DateTimeField不會包含最后一天,因為邊界被解釋為“給定日期的0am”。

15. date

進行日期對比。


Django模型層之字段查詢參數及聚合函數


當USE_TZ為True時,字段將轉換為當前時區,然后進行過濾。

16. year

對年份進行匹配。


Django模型層之字段查詢參數及聚合函數


當USE_TZ為True時,在過濾之前,datetime字段將轉換為當前時區。

17. month

對月份進行匹配。取整數1(1月)至12(12月)。


Django模型層之字段查詢參數及聚合函數


當USE_TZ為True時,在過濾之前,datetime字段將轉換為當前時區。

18. day

對具體到某一天的匹配。


Django模型層之字段查詢參數及聚合函數


當USE_TZ為True時,在過濾之前,datetime字段將轉換為當前時區。

19. week

Django1.11中的新功能。根據ISO-8601返回周號(1-52或53),即星期一開始的星期,星期四或之前的第一周。


Django模型層之字段查詢參數及聚合函數


當USE_TZ為True時,字段將轉換為當前時區,然后進行過濾。

20. week_day

進行“星期幾”匹配。 取整數值,星期日為1,星期一為2,星期六為7。


Django模型層之字段查詢參數及聚合函數


當USE_TZ為True時,在過濾之前,datetime字段將轉換為當前時區。

21. time

Django1.11中的新功能。

將字段的值轉為datetime.time格式并進行對比。

Django模型層之字段查詢參數及聚合函數


USE_TZ為True時,字段將轉換為當前時區,然后進行過濾。

22. hour

對小時進行匹配。 取0和23之間的整數。


Django模型層之字段查詢參數及聚合函數


當USE_TZ為True時,值將過濾前轉換為當前時區。

23. minute

對分鐘匹配。取0和59之間的整數。


Django模型層之字段查詢參數及聚合函數


當USE_TZ為True時,值將被過濾前轉換為當前時區。

24. second

對秒數進行匹配。取0和59之間的整數。


Django模型層之字段查詢參數及聚合函數


當USE_TZ為True時,值將過濾前轉換為當前時區。

25. isnull

值為False或True, 相當于SQL語句IS NULL和IS NOT NULL.

Entry.objects.filter(pub_date__isnull=True)

26. search

自1.10版以來已棄用。

27. regex

區分大小寫的正則表達式匹配。

Entry.objects.get(title__regex=r'^(An?|The) +')

建議使用原始字符串(例如,r'foo'而不是'foo')來傳遞正則表達式語法。

28. iregex

不區分大小寫的正則表達式匹配。

Entry.objects.get(title__iregex=r'^(an?|the) +')

聚合函數

Django的django.db.models模塊提供以下聚合函數。

1. expression

引用模型字段的一個字符串,或者一個query expression。

2. output_field

用來表示返回值的model field,一個可選的參數。

3.?**extra

關鍵字參數可以給聚合函數生成的SQL提供額外的信息。

4. Avg

class Avg(expression, output_field=FloatField(), **extra)[source]

返回給定表達式的平均值,它必須是數值,除非指定不同的output_field。


Django模型層之字段查詢參數及聚合函數


5. Count

class Count(expression, distinct=False, **extra)[source]

返回與expression相關的對象的個數。


Django模型層之字段查詢參數及聚合函數


6. Max

class Max(expression, output_field=None, **extra)[source]

返回expression的最大值。


Django模型層之字段查詢參數及聚合函數


7. Min

class Min(expression, output_field=None, **extra)[source]

返回expression的最小值。


Django模型層之字段查詢參數及聚合函數


8. StdDev

class StdDev(expression, sample=False, **extra)[source]

返回expression的標準差。

.

Django模型層之字段查詢參數及聚合函數


9. Sum

class Sum(expression, output_field=None, **extra)[source]

計算expression的所有值的和。


Django模型層之字段查詢參數及聚合函數


10. Variance

class Variance(expression, sample=False, **extra)[source]

返回expression的方差。


Django模型層之字段查詢參數及聚合函數


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女