详解Django的 create() 函数:创建对象

  • Post category:Python

我来为您详细讲解Django中create()函数的作用与使用方法。

1. create()函数简介

Django中的create()函数是一个快速创建某个模型实例并将其保存到数据库的方法。create()函数的格式为model.objects.create(kwargs),其中kwargs代表需要传递给模型的值。

这个函数实际上是create方法的封装,是利用manager.create()的办法来操作的,不必经历 model(),然后保存。

2. 使用方法的攻略

2.1 用create()函数创建模型

使用create()方法创建模型需要进行以下步骤:

  1. 获取模型的对象;

  2. 调用create()函数,并以参数kwargs的形式传递需要添加到数据库中的记录的键值对。

实例如下:

from myapp.models import User

# 创建一个新用户
new_user = User.objects.create(first_name='张', last_name='三', age=23)

# 创建一个新书籍
new_book = Book.objects.create(name='《Django入门指南》', author='陈', price=28.5)

在这个例子中,我们先通过models.py中定义的User和Book来获得相应的模型对象,然后调用create()函数。对于每个对象,我们传递了不同的键值对(即不同的属性值),如first_name,last_name和age等。

2.2 通过create()函数保存多个模型

使用create()函数保存多个模型需要进行以下步骤:

  1. 获取模型的对象;

  2. 调用定义的create()函数,传递一个包含要保存多个模型的列表作为参数。

实例如下:

from myapp.models import User

# 创建多个用户
User.objects.create([
    {'first_name': '张', 'last_name': '三', 'age': 23},
    {'first_name': '李', 'last_name': '四', 'age': 24},
    {'first_name': '王', 'last_name': '五', 'age': 25},
])

在这个例子中,我们传递的是一个包含多个字典的列表,每个字典对应一个模型。对于每个模型,我们传递了不同的键值对,如first_name,last_name和age等。

3. 实例说明

3.1 一个模型的创建

例如,我们要创建一个名为User的模型,并将其保存到数据库中。具体操作如下:

  1. 在models.py中定义User模型:
from django.db import models

class User(models.Model):
    first_name = models.CharField(max_length=256)
    last_name = models.CharField(max_length=256)
    age = models.IntegerField(default=0)
  1. 在Django Shell中使用以下代码片段创建一个新的User:
from myapp.models import User

# 创建一个新用户
new_user = User.objects.create(first_name='张', last_name='三', age=23)

执行完毕之后,User对象已经创建并保存到了数据库中。

3.2 保存多个模型

接下来我们再来看一个保存多个模型的实例。例如,我们要将三个不同的User对象保存到数据库中。具体操作如下:

  1. 在Django Shell中使用以下代码片段创建新User:
from myapp.models import User

# 创建多个用户
User.objects.create([
    {'first_name': '张', 'last_name': '三', 'age': 23},
    {'first_name': '李', 'last_name': '四', 'age': 24},
    {'first_name': '王', 'last_name': '五', 'age': 25},
])

执行完毕之后,我们成功地将三个User对象保存到了数据库中。

4. 结论

create()函数是一种方便快捷的创建和保存模型记录的方式。使用该函数,我们可以一次性创建一个或多个模型对象,而不是先实例化对象并将它们存储到数据库中。这使得我们的代码更加高效,代码行数更少,更加可读。