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