Django4.0 執(zhí)行查詢-將修改保存至對(duì)象

2022-03-16 17:33 更新

要將修改保存至數(shù)據(jù)庫中已有的某個(gè)對(duì)象,使用 ?save()?。

有一個(gè)已被存入數(shù)據(jù)庫中的 ?Blog? 實(shí)例 ?b5?,本例將其改名,并在數(shù)據(jù)庫中更新其記錄:

>>> b5.name = 'New name'
>>> b5.save()

這在幕后執(zhí)行了 ?UPDATE ?SQL 語句。Django 在你顯示調(diào)用 save() 后才操作數(shù)據(jù)庫。

保存 ForeignKey 和 ManyToManyField 字段

更新 ?ForeignKey ?字段的方式與保存普通字段的方式相同——只需將正確類型的實(shí)例分配給相關(guān)字段。本例為 ?Entry ?類的實(shí)例 ?entry ?更新了 ?blog ?屬性,假設(shè) ?Entry ?和 ?Blog ?的實(shí)例均已保存在數(shù)據(jù)庫中(因此能在下面檢索它們):

>>> from blog.models import Blog, Entry
>>> entry = Entry.objects.get(pk=1)
>>> cheese_blog = Blog.objects.get(name="Cheddar Talk")
>>> entry.blog = cheese_blog
>>> entry.save()

更新 ?ManyToManyField字段有點(diǎn)不同——在字段上使用 ?add()? 方法為關(guān)聯(lián)關(guān)系添加一條記錄。本例將 ?Author ?實(shí)例 ?joe ?添加至 ?entry ?對(duì)象:

>>> from blog.models import Author
>>> joe = Author.objects.create(name="Joe")
>>> entry.authors.add(joe)

要一次添加多行記錄至 ?ManyToManyField ?字段,在一次調(diào)用 ?add()? 時(shí)傳入多個(gè)參數(shù),像這樣:

>>> john = Author.objects.create(name="John")
>>> paul = Author.objects.create(name="Paul")
>>> george = Author.objects.create(name="George")
>>> ringo = Author.objects.create(name="Ringo")
>>> entry.authors.add(john, paul, george, ringo)

Django 會(huì)在添加或指定錯(cuò)誤類型的對(duì)象時(shí)報(bào)錯(cuò)。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)