Django中get和filter的區別

2021-09-11 01:30:07 字數 1224 閱讀 3793

class student(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(): 

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

比如我資料庫裡有一條記錄,記錄的name的值是"django"的話,我用student = student.objects.get(name='django'),

返回的是乙個記錄物件,你可以通過student.__dict__來檢視,它返回的是乙個字典的形式,{'key':valeus},key是字段的名稱,而values是值的內容。

而如果我用get方法來查詢乙個資料庫裡不存在的記錄,程式會報錯。

比如:student = student.objects.get(name='python')

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

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

id name age

1 python 24

book表:

id student_id

1 1

2 1

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

book = book.objects.get(student)

它也會報錯,因為book表有2條記錄和student表相匹配。

二.django的filter:

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

比如我資料庫裡有一條記錄,記錄的name的值是python的話,我用student = student.objects.filter(name='python')

它返回的student是乙個物件的列表,可以看的出來student[0]和上面的get方式返回的student的結果是一樣的。

Django中filer和get的區別

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

django中GET與POST請求

view.py中定義 from django.http import httpresponse從request中取值的兩種形式 urls.py檔案中的新增路徑 from django.conf.urls import url from django.contrib import admin from...

django中request的GET小記

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