您好,登錄后才能下訂單哦!
小編給大家分享一下Django框架模型怎么用,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
具體如下:
ORM介紹
ORM Object relational mapping 對象關系映射
把面向對象中的類和數據庫表一一對應起來,通過操作類和對象,對數據庫表實現數據的增刪改查等操作,而不需要寫SQL語句(由orm框架生成)
Django是實現了ORM的一個框架,在django項目與數據庫之間起著橋梁的角色。
使用ORM可以通過方便的配置,切換使用不同的數據庫
使用django進行數據庫開發的步驟如下:
在models.py中定義模型類
生成遷移文件: python manage.py makemigrations
執行遷移生成數據庫表(默認使用sqlite3數據庫,生成的數據庫名為:db.sqlite3): python manage.py migrate
通過模型類和對象,對數據進行增刪改查
模型類設計
案例:
部門類(Department):
部門名稱: name
部門成立時間: create_date
員工類(Employee)
性名: name
年齡: age
性別: sex
工資: salary
備注信息: comment
說明:
在應用models.py中編寫模型類, 必須繼承與models.Model類。
在模型類中,定義屬性,生成對應的數據庫表字段:
屬性名 = models.字段類型(字段選項)
字段類型(初步了解,models包下的類):
CharField--字符串
IntegerField--整形
BooleanField--布爾
DateFiled--日期
DecimalFiled--浮點
ForeignKey--外鍵,建立一對多關系
不需要定義主鍵id,會自動生成
模型類生成表
根據模型類,生成遷移文件
python manage.py makemigrations
執行遷移文件生成數據庫表
python manage.py migrate
生成表名的默認格式:
應用名_模型類名小寫
使用sqliteman查看生成的數據庫表
安裝sqliteman
sudo apt-get install sqliteman
啟動sqliteman
sqliteman
啟動后,通過file -> open 打開項目下的db.sqlite3數據庫進行查看
通過ORM操作數據庫
Django實現了orm功能,在django項目中,不需要寫sql語句,通過模型類和對象,就可以直接操作數據庫數據了。
可以通過以下命令,進入python交互環境,執行操作數據庫的代碼:
python manage.py shell
增刪改
調用一個模型類對象的save方法, 就可以實現數據新增或修改。id值在數據庫表中不存在或者為空,則新增,否則為修改。
模型類對象.save() # 新增或修改
調用一個模型類對象的delete方法,就可以實現數據刪除,會根據id刪除。
模型類對象.delete() # 根據對象的id進行刪除
示例:
from app01.models import Department, Employee from datetime import date d = Department() d.name ='研發部' d.create_date = date(2017,1,1) d.save() # 新增 d.name ='人事部' d.save() # 修改 d.id = 10 d.save() # 新增 d.name = '研發部' d.id = None d.save() # 新增 d.id = None d.save() # 新增 d.delete() # 刪除
模型管理器
每個模型類默認都有 objects 類屬性,可以把它叫 模型管理器。它由django自動生成,類型為 django.db.models.manager.Manager
>>> Employee.objects <django.db.models.manager.Manager object at 0x7fcfcdf67550>
objects模型管理器中提供了一些查詢數據的方法:
objects管理器中的方法 | 返回類型 | 作用 |
---|---|---|
模型類.objects.get() | 模型對象 | 返回一個對象,且只能有一個: 如果查到多條數據,則報錯:MultipleObjectsReturned 如果查詢不到數據,則報錯:DoesNotExist |
模型類.objects.filter() | QuerySet | 返回滿足條件的對象 |
模型類.objects.all() | QuerySet | 返回所有的對象 |
關聯查詢
部門和員工是一對多的關系,怎么根據部門查員工,或根據員工查詢部門呢?
用法:
假設在一對多關系中,一對應的類叫做一類,多對應的類叫做多類:
由一類對象查詢多類對象:
一類對象.多類名小寫_set.all()
由多類對象查詢一類對象:
多類對象.關聯屬性
示例:
# 查詢部門id為1的所有員工 d = Department.objects.get(id=1) d.employee_set.all() # 一查多 # 查詢id為1的員工所屬的部門信息 e = Employee.objects.get(id=1) e.department # 多查一
以上是“Django框架模型怎么用”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。