一. 數據的查詢和編輯
假如現在models.py中已經下面這個類,並且已經創建了相應的表
class Stu(models.Model):
stu_id = models.CharField(max_length=20) # 學號
name = models.CharField(max_length=50, unique=True) 姓名
password = models.CharField(max_length=50) # 密碼
age = models.IntegerField() # 年齡
email = models.CharField(max_length=50) # 郵箱
details = models.TextField() # 詳細描述
filter()
# 返回指定條件的列表,若沒有匹配的信息,那就返回一個空列表
1. 查詢學號爲32的學生信息
stu_info = Stu.objects.filter(stu_id='32').first()
2. 查詢姓名爲張三,年齡爲18的學生
data = {
"name": "張三",
"age": "18"
}
stu_info = Stu.objects.filter(**data)
注意這兒傳入的參數,因爲是字典,所以要用**data表示,否則就會出錯
exclude()
# 返回不符合條件的QuerySet,列表類型
1. 返回年齡不等於18的學生
stu_info = Stu.objeects.exclude(stu_id="18")
order_by()
# 串接到QuerySet之後,針對某一字段進行排序
1. 根據學生的年齡排序
stu_list = Stu.objects.all().order_by('age') # 根據年齡從小到大排序
stu_list = Stu.obj.all().order_by('-age') # 根據年齡從大到小排序
all()
# 返回所有QuerySet
stu_inf = Stu.objects.all() # 獲取表中所有的數據
get()
# 獲取指定符合條件的唯一元素,如果找不到或者有一個以上的符合條件,都會產生exception
stu_info = Stu.objects.get(age="18") # 得到第一條數據
first()/last()
# 獲取第一個/最後一個元素
stu_info = Stu.objects.filter(age="18").first()
stu_info = Stu.objects.filter(age="18").last()
aggregate()
# 可以用來計算數據項的聚合函數
exists()
# 用來檢查是否存在某指令條件的記錄,通常附加在filter()後面
update()
# 更新數據庫的內容
Stu.objects.filter(name="李四").update(age="17") # 將李四的年齡改爲17
delete()
# 刪除數據庫中的某項記錄
Stu.objects.filter(id=1).delete() # 將id爲1的學生信息刪除
create()
# 創建記錄
data = {
"name": "周某人",
"age": "18",
"email": "xxxxxxx"
}
Stu.objects.create(**data) # 創建信息
# 相當於SQL語句中的如下語句
INSERT INTO stu (name, age, email) VALUES ("周某人", "18", "xxxxxxx");
iexact()
# 不區分大小寫的條件查詢
contains()/icontains()
# 設置條件爲含有某一字符串就符合,如SQL語句中的LIKE和ILIKE
in()
# 提供一個列表,只要符合列表中的任何一個值均可
gt/gte/lt/lte
# 大於/大於等於/小於/小於等於
stu_info = Stu.objects.filter(id__gt=2) # 找出id大於2的所有記錄
注:這是django自帶的方法,不能寫id>2, 而是用id__gt=2。即字段+雙下劃線+大小+等於號
例如找出大於等於5的所有記錄
stu_info = Stu.objects.filter(id__gte=5)