Django中的save()函数是用来持久化存储一个对象实例的方法。它的主要作用是将操作的数据保存到数据库中。在使用Django的ORM模块,操作数据并将数据持久化到数据库时,一般都需要使用到save()函数。
使用方法
在模型类中,定义了一个对象实例保存到数据库的方法,该方法名为save()。
其基本使用方法如下:
class SomeModel(models.Model):
name = models.CharField(max_length=50, null=False)
age = models.IntegerField(null=False)
def save(self, *args, **kwargs):
super(SomeModel, self).save(*args, **kwargs)
调用save()方法有两个参数:
- args:这个参数是位置参数,用于传递一些参数(元组)。
- kwargs:这个参数是用于传递关键字参数的(字典)。
案例
以下是两个使用save()函数进行对象实例持久化的实例:
实例一
假设我们要添加一条新闻,首先我们需要定义一个模型class News(models.Model),然后定义对应的属性(例如:title、description、content),接着我们需要在视图views.py中定义一个函数savenews(request)来接收用户提交的数据。
# model
class News(models.Model):
title = models.CharField(max_length=50, null=False)
description = models.CharField(max_length=200, null=False)
content = models.TextField(null=False)
# view
def savenews(request):
title = request.POST.get('title')
description = request.POST.get('description')
content = request.POST.get('content')
news = News(title=title, description=description, content=content)
news.save()
return HttpResponse('保存成功')
如上代码描述,我们首先从request中获取用户提交的数据参数title、description、content,然后构造一个news对象,并调用save()方法将其保存到数据库中。
实例二
在Django中,我们使用ORM来操作数据库,假设我们有一个模型class UserModel(models.Model),这个模型有很多属性(例如:username、password、email等等),我们想对其中的一个字段(例如email)进行更新操作,接着在视图views.py中定义一个函数changepw(request),用户根据ID提交要更改email的用户ID和新email值。
# models
class UserModel(models.Model):
username = models.CharField(max_length=50)
password = models.CharField(max_length=50)
email = models.EmailField(null=True)
# view
def changeemail(request):
id = request.POST.get('id')
email = request.POST.get('email')
user = UserModel.objects.get(id=id)
user.email = email
user.save()
return HttpResponse('更新成功')
如上代码描述,我们首先从request中获取用户提交的参数,接着通过id查询模型并获取模型对象user,最后更改user的email属性值,并调用save()方法将其保存到数据库中。
小结
综上所述,Django中的save()函数是用来将一个对象实例持久化存储到数据库的方法。它的基本使用方法非常简单,只需要在模型class中定义一个save()方法,可以使用ORM很方便的对数据进行操作。虽然Django有自动提交的机制,但是对于一些特殊的业务需求,也可以手动调用save()方法进行数据提交。