一.查詢函數html
經過模型類.objects屬性能夠調用以下函數,實現對模型類對應的數據表的查詢。 (這裏objects是django爲咱們實現的一個模型管理類的對象)python
(1)get數據庫
返回知足條件的一條且只有一條數據。返回值是一個模型類的對象。django
參數中寫查詢條件。緩存
1)若是查到多條數據,則拋異常MultipleObjectsReturned。函數
2)查詢不到數據,則拋異常:DoesNotExistthis
***************注意*********************spa
用get查詢的時候,查詢不到內容的時候會拋出異常,一樣查詢結果多餘1條的時候也會拋出異常。所以,不能使用get,而應該使用filter。code
filer如果查詢不到數據,會返回一個空的查詢集,[] type類型是:Queryset。htm
查詢到多餘一條的時候會,仍是會返回一個包含多個對象的查詢集。
全部用filter查詢到的是否爲'[ ]'來判斷是否存在。
a:
1
2
3
4
5
|
userinfo
=
Users.objects.
filter
(email
=
request.POST[
'email'
])
if
userinfo.exists():
print
(
"yes,we have this email"
)
else
:
print
(
"sorry,email is not register"
)
|
b:能夠使用count()這個方法,userinfo.count() =0的話表示不存在數據,大於0的話表示存在一條或多條。
c:if uerinfo:..........else: .......
***************注意*********************
(2)all
返回模型類對應的表中全部的數據。返回的是一個Queryset集合。
(3)filter
返回知足條件的數據,返回值是一個Queryset集合。
(4)exclude
返回不知足條件的數據,返回值是一個Queryset集合。
(5)order_by
對查詢的結果進行排序,返回值是一個Queryset集合。
查詢條件格式
條件格式:
1 |
|
a)判等
條件名:exact。
能夠省略。
b)模糊查詢
contains 包含
startwith 開頭 endwith 結尾
c)空查詢
isnull
d) 範圍查詢
in
e)比較查詢
lt 小於 gt 大於 gte大於等於 lte小於等於
f)日期查詢
year 年份
二.F對象
用於類屬性之間的比較。使用以前須要先導入:
1 |
|
二.Q對象
用於查詢時條件之間的邏輯關係。not and or,能夠對Q對象進行~&|操做。 使用前應該先導入:
1 |
|
三.聚合函數
對查詢結果進行聚合操做。 sum count avg max min
(1)aggregate
調用這個函數來使用聚合。返回值是一個字典。
先要導入聚合類:
1 |
|
(2)count函數 返回值是一個數字.
他們是對查詢結果進行操做。
例如:
1 |
|
關聯查詢
經過多類的條件查詢一類的數據:
1 |
|
經過一類的條件查詢多類的數據:
1 |
|
queryset查詢集
查詢集特性:
1)惰性查詢:只有在實際使用查詢集中的數據的時候纔會發生對數據庫的真正查詢。
2)緩存:當使用的是同一個查詢集時,第一次使用的時候會發生實際數據庫的查詢,而後把結果緩存起來,以後再使用這個查詢集時,使用的是緩存中的。
能夠用角標或者切片的方式來限制查詢值。