举报投诉联系我们 手机版 热门标签 名动网
您的位置:名动网 > django修改数据 Django4.0 执行查询-将修改保存至对象

django修改数据 Django4.0 执行查询-将修改保存至对象

2023-03-23 07:20 Django4中文教程

django修改数据 Django4.0 执行查询-将修改保存至对象

django修改数据

Django是一个强大的Web框架,它可以帮助开发者快速构建功能丰富的Web应用程序。在Django中,修改数据是一项重要的任务,它可以帮助开发者实现数据库的增删改查。

在Django中,修改数据有多种方法,其中最常用的是使用Model.objects.update()方法。该方法可以根据给定的条件来修改数据库中的记录。例如,我们想要将所有名字为“John”的记录的年龄都增加1岁:

Person.objects.filter(name='John').update(age=F('age')+1)

上面代码中使用了F函数来表示原始字段值,这样就不会因为多个进程同时更新而出现冲突问题。此外,我们也可以使用Model.save()方法来保存对象实例:

person = Person.objects.get(name='John')  # 获取对象实例 
person.age += 1  # 修改年龄 
person.save()  # 保存对象实例 

上面代码中使用了Model.get()方法来获取对象实例,然后通过修改该对象实例的属性来修改数据库中相应的记录。最后使用Model.save()方法将修改后的对象实例写入到数据库中。

此外,我们也可以使用ModelForm表单来快速地创建、保存、验证表单数据。ModelForm表单是一个特别有用的工具,它能够带你快速地将表单数据映射到Django Model上去。例如我们想要创建一个Person表单来新增Person对象时:

class PersonForm(forms.ModelForm):  

    class Meta:  

        model = Person  

        fields = ('name', 'age')  

    def save(self, commit=True):  

        person = super().save(commit=False)  

        if commit:  

            person.save()  

        return person 

上面代码中我们使用了forms.ModelForm来创建PersonForm表单,然后重写了save()方法来新增Person对象。最后我们就能够通过请form表单快速地将文本字段映射到Person Model上去了。

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 会在添加或指定错误类型的对象时报错。


阅读全文
以上是名动网为你收集整理的django修改数据 Django4.0 执行查询-将修改保存至对象全部内容。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。
相关文章
© 2024 名动网 mdwl.vip 版权所有 联系我们