Django中create和save方法的不同
前言
Django的模型(Model)的本質(zhì)是類,并不是一個(gè)具體的對(duì)象(Object)。當(dāng)你設(shè)計(jì)好模型后,你就可以對(duì)Model進(jìn)行實(shí)例化從而創(chuàng)建一個(gè)一個(gè)具體的對(duì)象。Django對(duì)于創(chuàng)建對(duì)象提供了2種不同的save與create方法,我們來仔細(xì)分析下這兩種方式有什么不同。
我們來先看看下面這個(gè)例子。我們已經(jīng)設(shè)計(jì)好了一個(gè)Person的模型(如下)。
from django.db import models class Person(models.Model): name = models.CharField(max_length=128) def __str__(self): return self.name
用save方法創(chuàng)建對(duì)象
用save方法創(chuàng)建一個(gè)名叫l(wèi)ucifer的具體對(duì)象,我們可以這么做。記住你只有用了save()方法后,Django才會(huì)將這個(gè)對(duì)象的信息存儲(chǔ)到數(shù)據(jù)庫中。
lucifer= Person(name="lucifer") lucifer.save()
用create方法創(chuàng)建對(duì)象
正因?yàn)橛胹ave方法創(chuàng)建對(duì)象有2步,而且編程人員容易忘記加上save(),Django提供了一個(gè)更便捷的create方法,如下。如果你使用create方法,無需再加上save()。create方法不僅創(chuàng)建了新的對(duì)象,而且直接將信息存儲(chǔ)到數(shù)據(jù)庫里。
lucifer = Person.objects.create(name="lucifer ")
User自帶的create_user方法
如果你要Auth自帶的User模型創(chuàng)建新對(duì)象,你需要使用create_user方法,而不是create方法,如下所示。create_user方法很有用,自動(dòng)會(huì)給密碼加Hash。
user1 = User.objects.create_user(username=username, username=password)
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
利用Python中的輸入和輸出功能進(jìn)行讀取和寫入的教程
這篇文章主要介紹了利用Python中的輸入和輸出功能進(jìn)行讀取和寫入的教程,本文來自于IBM官方網(wǎng)站技術(shù)文檔,需要的朋友可以參考下2015-04-04Python實(shí)現(xiàn)點(diǎn)云投影到平面顯示
今天小編就為大家分享一篇Python實(shí)現(xiàn)點(diǎn)云投影到平面顯示,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python實(shí)現(xiàn)批量把SVG格式轉(zhuǎn)成png、pdf格式的代碼分享
這篇文章主要介紹了Python實(shí)現(xiàn)批量把SVG格式轉(zhuǎn)成png、pdf格式的代碼分享,本文代碼需要引用一個(gè)第三方模塊cairosvg,需要的朋友可以參考下2014-08-08基于Python和openCV實(shí)現(xiàn)圖像的全景拼接詳細(xì)步驟
這篇文章主要介紹了基于Python和openCV實(shí)現(xiàn)圖像的全景拼接,本文分步驟通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下2021-10-10在Python程序和Flask框架中使用SQLAlchemy的教程
SQLAlchemy為Python程序與SQL語句之間建立了映射,是Python操作數(shù)據(jù)庫的利器,這里我們將來看在Python程序和Flask框架中使用SQLAlchemy的教程,需要的朋友可以參考下2016-06-06python轉(zhuǎn)化excel數(shù)字日期為標(biāo)準(zhǔn)日期操作
這篇文章主要介紹了python轉(zhuǎn)化excel數(shù)字日期為標(biāo)準(zhǔn)日期操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07淺析Python自帶性能強(qiáng)悍的標(biāo)準(zhǔn)庫itertools
itertools是python內(nèi)置的模塊,使用簡單且功能強(qiáng)大。這篇文章就主要介紹了通過itertools實(shí)現(xiàn)可迭代對(duì)象的無限迭代、有限迭代和排列組合。感興趣的同學(xué)可以關(guān)注一下2021-12-12