Django4.0 执行查询-将修改保存至对象
要将修改保存至数据库中已有的某个对象,使用 save()
。
有一个已被存入数据库中的 Blog
实例 b5
,本例将其改名,并在数据库中更新其记录:
>>> b5.name = 'New name'
>>> b5.save()
这在幕后执行了 UPDATE
SQL 语句。Django 在你显示调用 save() 后才操作数据库。
保存 ForeignKey 和 ManyToManyField 字段
更新 ForeignKey
字段的方式与保存普通字段的方式相同——只需将正确类型的实例分配给相关字段。本例为 Entry
类的实例 entry
更新了 blog
属性,假设 Entry
和 Blog
的实例均已保存在数据库中(因此能在下面检索它们):
>>> 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
字段有点不同——在字段上使用 add()
方法为关联关系添加一条记录。本例将 Author
实例 joe
添加至 entry
对象:
>>> from blog.models import Author
>>> joe = Author.objects.create(name="Joe")
>>> entry.authors.add(joe)
要一次添加多行记录至 ManyToManyField
字段,在一次调用 add()
时传入多个参数,像这样:
>>> 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 会在添加或指定错误类型的对象时报错。