Django新增数据
Django新增數(shù)據(jù)
方式一
增加是比較簡單的操作,Django的ORM可以使用如下的方式新增一條數(shù)據(jù)。
from book.models import BookInfo book = BookInfo(name="Django教程",readcount=0,commentcount=0) # 創(chuàng)建BookInfo對(duì)象 book.save() # 使用save方法保存到數(shù)據(jù)庫Django做的比較優(yōu)雅的事情是:Django的一個(gè)model類對(duì)應(yīng)數(shù)據(jù)庫中一張表,而該類的對(duì)象則對(duì)應(yīng)于數(shù)據(jù)表中的一條數(shù)據(jù),這樣的抽象是比較合理的。
注意:
使用save()方法保存新對(duì)象的時(shí)候,不要指定主鍵的值。因?yàn)樵谀阏{(diào)用 save() 之前,沒有辦法表中的 id 的值應(yīng)該是多少,因?yàn)檫@個(gè)值是由你的數(shù)據(jù)庫計(jì)算出來的,而不是由 Django 計(jì)算出來的。save()方法也被用來更新數(shù)據(jù),如前所述,如果你在保存新對(duì)象的時(shí)候指定了主鍵的值,如果這個(gè)值在數(shù)據(jù)庫中已經(jīng)存在,那么插入操作,就變成了更新操作。方式二
除了上面的方式之外,還可以使用Model.objects的方法來實(shí)現(xiàn)新增一條數(shù)據(jù)。
Django每個(gè)非抽象的 Model 類必須有一個(gè) Manager 實(shí)例添加到其中。Django 確保在你的模型類中至少指定了一個(gè)默認(rèn)的 Manager。如果你沒有添加自己的 Manager,Django 會(huì)添加一個(gè)屬性 objects,包含默認(rèn)的 Manager 實(shí)例。如果添加自己的 Manager 實(shí)例屬性,則不會(huì)出現(xiàn)默認(rèn)的。
Manager 是一種接口,它賦予了 Django 模型操作數(shù)據(jù)庫的能力。Django 應(yīng)用中每個(gè)模型擁有至少一個(gè) Manager,就是默認(rèn)的objects.
以上這些描述來自Django官方文檔。之后再寫一篇文章詳細(xì)解釋這些東西,現(xiàn)在只需要知道默認(rèn)的Manager是objects,它能賦予Django模型操作數(shù)據(jù)庫的能力。
objects管理器提供了create()方法,可以一步到位直接將數(shù)據(jù)保存至數(shù)據(jù)庫。例如:
from book.models import BookInfo BookInfo.objects.create(name="Python教程",readcount=0,commentcount=0)注意:
如果你的新增操作包含了一個(gè)你手動(dòng)設(shè)置的主鍵值,而且如果這個(gè)值已經(jīng)存在于數(shù)據(jù)庫中,那么對(duì) create() 的調(diào)用就會(huì)以一個(gè) IntegrityError 失敗,因?yàn)橹麈I必須是唯一的。如果必須使用手動(dòng)主鍵,那么要做好處理異常處理。和save()一樣,通常情況下,不要去指定主鍵的值。
總結(jié)
以上是生活随笔為你收集整理的Django新增数据的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网络编程传输层——UDP通信
- 下一篇: 突然报错package name doe