為了說明它們之間的區別,定義了兩個模型。
班級學生(模特。型號):
名稱=模型。CharField(‘name‘,max_length=20,default =‘‘‘)
年齡=模特。CharField(‘age‘,max_length=20,default =‘‘‘)
課本(模型。型號):
學生=模特。外鍵(學生)
首先,讓我們談談django的get方法:
1django的get方法是從數據庫中獲取匹配結果並返回壹個對象。如果記錄不存在,它將報告壹個錯誤。
例如,如果我的數據庫中有壹條記錄,並且該記錄的名稱的值為“python”,我將使用student = student . objects . get(name =‘法老Python‘)。
返回壹個record對象,您可以通過student查看該對象。__dict__。它返回壹個字典{‘key‘:valeus },其中key是字段的名稱,values是值的內容。
如果我使用get方法查詢數據庫中不存在的記錄,程序會報告錯誤。
例如:student = student . objects . get(name =‘老王‘),可以自己運行。
2如果使用django的get來獲取相關表的數據,如果鍵表中有兩條以上的數據,將會得到壹個錯誤。
例如,在我的學生表中有壹條記錄:
身份證姓名年齡
1 python 24
書臺:
id學生id
1 1
2 1
我使用
student = student . objects . get(name =‘python‘)
book = book . objects . get(student)
它還會報告壹個錯誤,因為book表中有2條記錄與student表匹配。
2.讓我們再來談談django過濾器:
1django的篩選方法從數據庫中獲取匹配結果並返回對象列表。如果記錄不存在,它將返回【】。
例如,如果我的數據庫中有壹條記錄,並且記錄名稱的值為python,我將使用student = student . objects . filter(name =‘法老Python‘)。
它返回的student是壹個對象列表,可以看到student【0】的結果與上面get方法返回的student的結果相同。