溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Django框架模型怎么用

發(fā)布時(shí)間:2021-08-10 13:32:41 來源:億速云 閱讀:154 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下Django框架模型怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

具體如下:

ORM介紹

  • ORM Object relational mapping 對(duì)象關(guān)系映射

  • 把面向?qū)ο笾械念惡蛿?shù)據(jù)庫表一一對(duì)應(yīng)起來,通過操作類和對(duì)象,對(duì)數(shù)據(jù)庫表實(shí)現(xiàn)數(shù)據(jù)的增刪改查等操作,而不需要寫SQL語句(由orm框架生成)

  • Django是實(shí)現(xiàn)了ORM的一個(gè)框架,在django項(xiàng)目與數(shù)據(jù)庫之間起著橋梁的角色。

使用ORM可以通過方便的配置,切換使用不同的數(shù)據(jù)庫

Django框架模型怎么用

使用django進(jìn)行數(shù)據(jù)庫開發(fā)的步驟如下:

  1. 在models.py中定義模型類

  2. 生成遷移文件: python manage.py makemigrations

  3. 執(zhí)行遷移生成數(shù)據(jù)庫表(默認(rèn)使用sqlite3數(shù)據(jù)庫,生成的數(shù)據(jù)庫名為:db.sqlite3): python manage.py migrate

  4. 通過模型類和對(duì)象,對(duì)數(shù)據(jù)進(jìn)行增刪改查

模型類設(shè)計(jì)

案例:

部門類(Department):

  • 部門名稱: name

  • 部門成立時(shí)間: create_date

員工類(Employee)

  • 性名: name

  • 年齡: age

  • 性別: sex

  • 工資: salary

  • 備注信息: comment

說明:

在應(yīng)用models.py中編寫模型類, 必須繼承與models.Model類。

在模型類中,定義屬性,生成對(duì)應(yīng)的數(shù)據(jù)庫表字段:

屬性名 = models.字段類型(字段選項(xiàng))

字段類型(初步了解,models包下的類):

  1. CharField--字符串

  2. IntegerField--整形

  3. BooleanField--布爾

  4. DateFiled--日期

  5. DecimalFiled--浮點(diǎn)

  6. ForeignKey--外鍵,建立一對(duì)多關(guān)系

不需要定義主鍵id,會(huì)自動(dòng)生成

模型類生成表

根據(jù)模型類,生成遷移文件

python manage.py makemigrations

執(zhí)行遷移文件生成數(shù)據(jù)庫表

python manage.py migrate

生成表名的默認(rèn)格式:

應(yīng)用名_模型類名小寫

使用sqliteman查看生成的數(shù)據(jù)庫表

安裝sqliteman

sudo apt-get install sqliteman

啟動(dòng)sqliteman

sqliteman

啟動(dòng)后,通過file -> open 打開項(xiàng)目下的db.sqlite3數(shù)據(jù)庫進(jìn)行查看

通過ORM操作數(shù)據(jù)庫

  • Django實(shí)現(xiàn)了orm功能,在django項(xiàng)目中,不需要寫sql語句,通過模型類和對(duì)象,就可以直接操作數(shù)據(jù)庫數(shù)據(jù)了。

可以通過以下命令,進(jìn)入python交互環(huán)境,執(zhí)行操作數(shù)據(jù)庫的代碼:

python manage.py shell

增刪改

調(diào)用一個(gè)模型類對(duì)象的save方法, 就可以實(shí)現(xiàn)數(shù)據(jù)新增或修改。id值在數(shù)據(jù)庫表中不存在或者為空,則新增,否則為修改。

模型類對(duì)象.save()  # 新增或修改

調(diào)用一個(gè)模型類對(duì)象的delete方法,就可以實(shí)現(xiàn)數(shù)據(jù)刪除,會(huì)根據(jù)id刪除。

模型類對(duì)象.delete() # 根據(jù)對(duì)象的id進(jìn)行刪除

示例:

from app01.models import Department, Employee
from datetime import date
d = Department()
d.name ='研發(fā)部'
d.create_date = date(2017,1,1)
d.save() # 新增
d.name ='人事部'
d.save() # 修改
d.id = 10
d.save() # 新增
d.name = '研發(fā)部'
d.id = None
d.save() # 新增
d.id = None
d.save() # 新增
d.delete() # 刪除

模型管理器

每個(gè)模型類默認(rèn)都有 objects 類屬性,可以把它叫 模型管理器。它由django自動(dòng)生成,類型為 django.db.models.manager.Manager

>>> Employee.objects
<django.db.models.manager.Manager object at 0x7fcfcdf67550>

objects模型管理器中提供了一些查詢數(shù)據(jù)的方法:

objects管理器中的方法返回類型作用
模型類.objects.get()模型對(duì)象返回一個(gè)對(duì)象,且只能有一個(gè):
 
如果查到多條數(shù)據(jù),則報(bào)錯(cuò):MultipleObjectsReturned
 如果查詢不到數(shù)據(jù),則報(bào)錯(cuò):DoesNotExist
模型類.objects.filter()QuerySet返回滿足條件的對(duì)象
模型類.objects.all()QuerySet返回所有的對(duì)象

關(guān)聯(lián)查詢

部門和員工是一對(duì)多的關(guān)系,怎么根據(jù)部門查員工,或根據(jù)員工查詢部門呢?

用法:

假設(shè)在一對(duì)多關(guān)系中,一對(duì)應(yīng)的類叫做一類,多對(duì)應(yīng)的類叫做多類:

由一類對(duì)象查詢多類對(duì)象:

一類對(duì)象.多類名小寫_set.all()

由多類對(duì)象查詢一類對(duì)象:

多類對(duì)象.關(guān)聯(lián)屬性

示例:

# 查詢部門id為1的所有員工
d = Department.objects.get(id=1)
d.employee_set.all() # 一查多
# 查詢id為1的員工所屬的部門信息
e = Employee.objects.get(id=1)
e.department   # 多查一

以上是“Django框架模型怎么用”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI