Django框架模型簡單介紹與使用分析
本文實例講述了Django框架模型簡單介紹與使用。分享給大家供大家參考,具體如下:
ORM介紹
- ORM Object relational mapping 對象關(guān)系映射
- 把面向?qū)ο笾械念惡蛿?shù)據(jù)庫表一一對應(yīng)起來,通過操作類和對象,對數(shù)據(jù)庫表實現(xiàn)數(shù)據(jù)的增刪改查等操作,而不需要寫SQL語句(由orm框架生成)
- Django是實現(xiàn)了ORM的一個框架,在django項目與數(shù)據(jù)庫之間起著橋梁的角色。
使用ORM可以通過方便的配置,切換使用不同的數(shù)據(jù)庫
使用django進行數(shù)據(jù)庫開發(fā)的步驟如下:
- 在models.py中定義模型類
- 生成遷移文件:
python manage.py makemigrations
- 執(zhí)行遷移生成數(shù)據(jù)庫表(默認使用sqlite3數(shù)據(jù)庫,生成的數(shù)據(jù)庫名為:db.sqlite3):
python manage.py migrate
- 通過模型類和對象,對數(shù)據(jù)進行增刪改查
模型類設(shè)計
案例:
部門類(Department):
-
部門名稱: name
-
部門成立時間: create_date
員工類(Employee)
-
性名: name
-
年齡: age
-
性別: sex
-
工資: salary
-
備注信息: comment
說明:
在應(yīng)用models.py中編寫模型類, 必須繼承與models.Model類。
在模型類中,定義屬性,生成對應(yīng)的數(shù)據(jù)庫表字段:
屬性名 = models.字段類型(字段選項)
字段類型(初步了解,models包下的類):
- CharField--字符串
- IntegerField--整形
- BooleanField--布爾
- DateFiled--日期
- DecimalFiled--浮點
- ForeignKey--外鍵,建立一對多關(guān)系
不需要定義主鍵id,會自動生成
模型類生成表
根據(jù)模型類,生成遷移文件
python manage.py makemigrations
執(zhí)行遷移文件生成數(shù)據(jù)庫表
python manage.py migrate
生成表名的默認格式:
應(yīng)用名_模型類名小寫
使用sqliteman查看生成的數(shù)據(jù)庫表
安裝sqliteman
sudo apt-get install sqliteman
啟動sqliteman
sqliteman
啟動后,通過file -> open 打開項目下的db.sqlite3數(shù)據(jù)庫進行查看
通過ORM操作數(shù)據(jù)庫
- Django實現(xiàn)了orm功能,在django項目中,不需要寫sql語句,通過模型類和對象,就可以直接操作數(shù)據(jù)庫數(shù)據(jù)了。
可以通過以下命令,進入python交互環(huán)境,執(zhí)行操作數(shù)據(jù)庫的代碼:
python manage.py shell
增刪改
調(diào)用一個模型類對象的save方法, 就可以實現(xiàn)數(shù)據(jù)新增或修改。id值在數(shù)據(jù)庫表中不存在或者為空,則新增,否則為修改。
模型類對象.save() # 新增或修改
調(diào)用一個模型類對象的delete方法,就可以實現(xiàn)數(shù)據(jù)刪除,會根據(jù)id刪除。
模型類對象.delete() # 根據(jù)對象的id進行刪除
示例:
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() # 刪除
模型管理器
每個模型類默認都有 objects 類屬性,可以把它叫 模型管理器。它由django自動生成,類型為 django.db.models.manager.Manager
>>> Employee.objects <django.db.models.manager.Manager object at 0x7fcfcdf67550>
objects模型管理器中提供了一些查詢數(shù)據(jù)的方法:
objects管理器中的方法 | 返回類型 | 作用 |
---|---|---|
模型類.objects.get() | 模型對象 | 返回一個對象,且只能有一個: 如果查到多條數(shù)據(jù),則報錯:MultipleObjectsReturned 如果查詢不到數(shù)據(jù),則報錯:DoesNotExist |
模型類.objects.filter() | QuerySet | 返回滿足條件的對象 |
模型類.objects.all() | QuerySet | 返回所有的對象 |
關(guān)聯(lián)查詢
部門和員工是一對多的關(guān)系,怎么根據(jù)部門查員工,或根據(jù)員工查詢部門呢?
用法:
假設(shè)在一對多關(guān)系中,一對應(yīng)的類叫做一類,多對應(yīng)的類叫做多類:
由一類對象查詢多類對象:
一類對象.多類名小寫_set.all()
由多類對象查詢一類對象:
多類對象.關(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框架的Python程序設(shè)計有所幫助。
相關(guān)文章
Jupyter notebook如何實現(xiàn)指定瀏覽器打開
這篇文章主要介紹了Jupyter notebook如何實現(xiàn)指定瀏覽器打開,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-05-05Python 統(tǒng)計Jira的bug 并發(fā)送郵件功能
這篇文章主要介紹了Python 統(tǒng)計Jira的bug 并發(fā)送郵件,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2022-01-01Python數(shù)組遍歷的簡單實現(xiàn)方法小結(jié)
這篇文章主要介紹了Python數(shù)組遍歷的簡單實現(xiàn)方法,結(jié)合實例總結(jié)分析了Python針對數(shù)組的元素,索引常用遍歷技巧,需要的朋友可以參考下2016-04-04基于Django的Admin后臺實現(xiàn)定制簡單監(jiān)控頁
Django自帶的后臺管理是Django明顯特色之一,可以讓我們快速便捷管理數(shù)據(jù)。后臺管理可以在各個app的admin.py文件中進行控制。本文將主要介紹如何利用Admin后臺實現(xiàn)監(jiān)控頁的定制,快來和小編一起學(xué)習(xí)一下吧2021-12-12python多個模塊py文件的數(shù)據(jù)共享實例
今天小編就為大家分享一篇python多個模塊py文件的數(shù)據(jù)共享實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01