django的get和filter方法的區別

2021-07-05 02:05:45 字數 2960 閱讀 1073

django

的get

和filter

方法是django model

常用到的,搞清楚兩者的區別非常重要。為了說明它們兩者的區別定義2個

models:

classstudent(models.model):

name = models.charfield('

姓名', max_length=20, default='')

age = models.charfield('

年齡', max_length=20, default='')

class book(models.model):

student= models.foreignkey(student)

django

的get

和filter

方法是django model

常用到的,搞清楚兩者的區別非常重要。為了說明它們兩者的區別定義2個

models:

classstudent(models.model):

name = models.charfield('

姓名', max_length=20, default='')

age = models.charfield('

年齡', max_length=20, default='')

classbook(models.model):

student = models.foreignkey(student)

1.1django的get方法是從資料庫的取得乙個匹配的結果,返回乙個物件,如果記錄不存在的話,它會報錯。

比如我資料庫裡有一條記錄,記錄的name的值是」

老王python」的話,我用student=student.objects.get(name='老王python'),返回的是乙個記錄物件,可以通過student.__dict__來檢視,它返回的是乙個字典的形式,{'key':valeus},key是字段的名稱,而values是值的內容。而如果我用get方法來查詢乙個資料庫裡不存在的記錄,程式會報錯。比如:student= student.objects.get(name='老王')。

1.2如果用django的get去取得關聯表的資料的話,而關鍵表的資料如果多於2條的話也會報錯。

比如我的student表裡有乙個記錄:

id name age

1 python 24

book表:

id student_id

1 12 1 

我用student = student.objects.get(name='python')

book = book.objects.get(student)

它也會報錯,因為

book表有2

條記錄和

student

表相匹配。

2.1django的filter方法是從資料庫的取得匹配的結果,返回乙個物件列表,如果記錄不存在的話,它會返回。

比如我資料庫裡有一條記錄,記錄的name的值是老王python的話,我用student =student.objects.filter(name='老王python'),它返回的student是乙個物件的列表,可以看的出來student[0]和上面的get方式返回的student的結果是一樣的。

2.2如果你用django的filter去取得關聯表的資料的話,無論關聯表有多少記錄的都不會報錯。

另外我從別的資料裡看到filter好像有快取資料的功能,第一次查詢資料庫並生成快取,下次再呼叫filter方法的話,直接取得快取的資料,會get方法每次執行都是直接查詢資料庫的,不知道這個是不是正確。

這是我用了一段時間django的一點心得體會,希望對大家了解django get和filter有幫助!

1.1 django的get方法是從資料庫的取得乙個匹配的結果,返回乙個物件,如果記錄不存在的話,它會報錯。

比如我資料庫裡有一條記錄,記錄的name的值是」 老王

python」的話,我用student= student.objects.get(name='老王python'),返回的是乙個記錄物件,可以通過student.__dict__來檢視,它返回的是乙個字典的形式,{'key':valeus},key是字段的名稱,而values是值的內容。而如果我用get方法來查詢乙個資料庫裡不存在的記錄,程式會報錯。比如:student = student.objects.get(name='老王')。

1.2如果用django的get去取得關聯表的資料的話,而關鍵表的資料如果多於2條的話也會報錯。

比如我的student表裡有乙個記錄:

id name age

1 python 24

book表:

id student_id

1 12 1 

我用student = student.objects.get(name='python')

book = book.objects.get(student)

它也會報錯,因為

book表有2

條記錄和

student

表相匹配。

2.1 django的filter方法是從資料庫的取得匹配的結果,返回乙個物件列表,如果記錄不存在的話,它會返回。

比如我資料庫裡有一條記錄,記錄的name的值是老王python的話,我用student = student.objects.filter(name='老王python'),它返回的student是乙個物件的列表,可以看的出來student[0]和上面的get方式返回的student的結果是一樣的。

2.2如果你用django的filter去取得關聯表的資料的話,無論關聯表有多少記錄的都不會報錯。

另外我從別的資料裡看到filter好像有快取資料的功能,第一次查詢資料庫並生成快取,下次再呼叫filter方法的話,直接取得快取的資料,會get方法每次執行都是直接查詢資料庫的,不知道這個是不是正確。

這是我用了一段時間django的一點心得體會,希望對大家了解django get和filter有幫助!

Django中get和filter的區別

class student models.model name models.charfield 姓名 max length 20,default age models.charfield 年齡 max length 20,default class book models.model studen...

Django中filer和get的區別

上面的例子中 filter 函式返回乙個記錄集,這個記錄集是乙個列表。相對列表來說,有些時候我們更需要獲取單個的物件,get 方法就是在此時使用的 publisher.objects.get name apress 這樣,就返回了單個物件,而不是列表 更準確的說,queryset 所以,如果結果是多...

django中request的GET小記

views.py from django.shortcuts import render 展示鏈結的頁面 defgettest1 request return render request,booktest gettest1.html 接收一鍵一值的情況 defgettest2 request 根據...