Django ORM(物件關係對映)

2021-10-14 10:02:45 字數 3078 閱讀 7728

簡而言之,orm就是物件導向語言使用關係型資料庫的中轉站。orm能使開發人員專注於業務邏輯,減少開發人員的負擔,但是orm的缺點也很明顯,效率不高並且無法實現複雜的sql功能。orm不能完全替代sql。

from django.db import models

# create your models here.

class user(models.model):

username = models.charfield(max_length=32) # charfield生成資料庫的varchar型別。

password = models.charfield(max_length=128)

然後執行資料庫遷移命令:

python manage.py migrate #資料庫遷移。

執行上面兩條命令之後的結果大概如下所示。 

然後在資料庫中新增兩條資料。

def index(request):  # index函式

obj = models.user.objects.all() # 獲取資料庫所有資料

for i in obj:

print(i.username, i.password) # 列印資料庫中的資料

return render(request, "index.html")

然後進入index頁面,重新整理頁面。就可以看到在控制台有如下的輸出。

當然,我們也可以獲取指定的資料,**如下:

def index(request):  # index函式

obj = models.user.objects.all() # 獲取資料庫所有資料

for i in obj:

print(i.username, i.password) # 列印資料庫中的資料

ret = models.user.objects.get(username="zy") # get方法獲取一條資料。

注意,get方法獲取不到資料以及獲取到多條資料的時候報錯。我們有另外的方法filter。它可以獲取多條資料。**如下。

def index(request):  # index函式

obj = models.user.objects.all() # 獲取資料庫所有資料

for i in obj:

print(i.username, i.password) # 列印資料庫中的資料

# ret = models.user.objects.get(username="zy") # get方法獲取乙個物件。

ret = models.user.objects.filter(password="123") # filter方法獲取多個資料。如果資料不存在,那麼返回空列表。

print(ret[0].username)

print(ret[1].username)

return render(request, "index.html")

來,看一下控制台的輸出。

def login(request): # login函式

if request.method == "get": # 前端如果是get請求

return render(request, 'login.html') # 返回html頁面。

elif request.method == "post": # 前端如果是post請求

username = request.post.get("username") # 獲取post請求中的username值

password = request.post.get("password") # 獲取密碼值

ret = models.user.objects.filter(username=username, password=password)

# if username == "zy" and password == "12345":

if ret:

return redirect("/index/")

else: # 如果使用者名稱或者密碼錯誤,返回登入頁面

return render(request, "login.html")

def index(request): # index函式

return render(request, "index.html")

現在,我們的登入頁面傳送的資料就可以在資料庫中查詢了。

_______________________________補充說明______________________________________

1. 通常而言,django的model繼承自models.model;

2. 繼承自models.model的模型會自動建立乙個名為id的字段作為表的主鍵。

物件關係對映

雙向一對一對映 class card 把關係的維護交給多方物件的屬性去維護關係 c 關係的擁有方負責關係的維護,在擁有方建立外來鍵。所以用到 joincolumn cascade 設定級聯關係,這種關係是遞迴呼叫 可以是 cascadetype.persist 級聯新建 cascadetype.re...

物件關係對映

雙向一對一對映 class card 把關係的維護交給多方物件的屬性去維護關係 c 關係的擁有方負責關係的維護,在擁有方建立外來鍵。所以用到 joincolumn cascade 設定級聯關係,這種關係是遞迴呼叫 可以是 cascadetype.persist 級聯新建 cascadetype.re...

Django ORM 關係管理物件的建立

from django.db import models class book models.model title models.charfield max length 32 pub models.foreignkey publisher on delete models.cascade cla...