Django大咖之路: 深入理解Django建立物件的create和save方法
Django的模型(Model)的本質是類,並不是一個具體的物件(Object)。當你設計好模型後,你就可以對Model進行例項化從而建立一個一個具體的物件。Django對於建立物件提供了2種不同的save與create方法,我們來仔細分析下這兩種方式有什麼不同。
我們來先看看下面這個例子。我們已經設計好了一個Person的模型(如下)。
from django.db import models
class Person(models.Model): name = models.CharField(max_length=128) def __str__(self): return self.name
用save方法建立物件
用save方法建立一個名叫john的具體物件,我們可以這麼做。記住你只有用了save()方法後,Django才會將這個物件的資訊儲存到資料庫中。
john = Person(name="John Fourkas")
john.save()
用create方法建立物件
正因為用save方法建立物件有2步,而且程式設計人員容易忘記加上save(),Django提供了一個更便捷的create方法,如下。如果你使用create方法,無需再加上save()。create方法不僅建立了新的物件,而且直接將資訊儲存到資料庫裡。
john = Person.objects.create(name="John Fourkas")
save與create方法比較
create只能用於建立新的物件,在資料庫層總是執行insert的操作。save不僅用於建立新的物件,也能用於更新物件的現有資料,在資料庫層總是先執行update,找不到具體物件後再執行insert的操作。對於建立全新的物件,兩者都可以。如果更新已有物件資訊,只能用save()方法
User自帶的create_user方法
如果你要Auth自帶的User模型建立新物件,你需要使用create_user方法,而不是create方法,如下所示。create_user方法很有用,自動會給密碼加Hash。
user1 = User.objects.create_user(username=username, username=password)
相關文章
- Django模型中的save方法 精講Django模型
- 深入理解Django的ModelForm操作DjangoORM
- Django:F物件和Q物件Django物件
- Django框架簡介和建立django專案的基本流程Django框架
- Django(26)HttpResponse物件和JsonResponse物件DjangoHTTP物件JSON
- 深入學習和理解Django模板層:構建動態頁面Django
- Django進階之路(一)Django
- Django之路由系統Django路由
- django 開發網站-建立 django 專案Django網站
- Django進階之路由層和檢視層Django路由
- 深入學習和理解Django檢視層:處理請求與響應Django
- save() create()區別
- django(django學習) 兩張表建立 插入資料Django
- Django中如何建立模型?Django模型
- Django建立app應用和admin模組DjangoAPP
- Django 原始碼小剖: Django 物件關係對映(ORM)Django原始碼物件ORM
- Django訊號與擴充套件:深入理解與實踐Django套件
- Django框架之路由層彙總Django框架路由
- 深入理解Django:中介軟體與訊號處理的藝術Django
- Django請求響應物件Django物件
- 深入理解Object.createObject
- Django(3)pycharm建立專案DjangoPyCharm
- django中建立一個ModelDjango
- python基礎 之 Django框架建立專案的方法入門PythonDjango框架
- Django整合騰訊COS物件儲存Django物件
- Django筆記十八之save函式的繼承操作和指定欄位更新等例項方法Django筆記函式繼承
- 2 – 建立 Django 部落格應用Django
- Django建立第一個專案Django
- 建立第一個django專案Django
- django-admin 和django-admin.py的區別Django
- Django(2) - Django模板Django
- Django的檢視和模板Django
- django和flask的區別DjangoFlask
- Python Django 的 django templatedoesnotexistPythonDjango
- django建立的專案路徑問題Django
- django | 根據 model 建立對應的表Django
- dya49:django:wsgrief&模板渲染Jinjia2&django的MTV/MVC框架&建立/啟動一個django專案DjangoMVC框架
- 深入理解原型物件和原型鏈原型物件