关键词

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

当使用Django ORM作为后端数据库操作模块时,create()函数提供了方便的功能能够快速创建并保存一个模型实例。下面将详细讲解create()函数的作用和使用方法,同时提供两个实例进行说明。

作用

create()函数的作用是创建一个新的模型实例,并将其保存至数据库中。

使用方法

create()函数是一个类方法,可以在模型类上直接调用,使用方式如下:

class ModelClass(models.Model):
    field1 = models.CharField(max_length=50)
    field2 = models.IntegerField()

object = ModelClass.objects.create(field1='value1', field2=1)

create()函数将在数据库中为该模型类创建一条新的记录,并将指定的字段值存储在相应的列中。调用create()函数时,需要传递一个或多个参数,参数的值将赋予新创建的实例中的字段。这些参数应该按照与模型中定义的字段相同的顺序被传递,并且字段名可选的。

除创建实例的方法之外,create()函数还提供了一个额外的特性。create()函数可以在创建新实例的同时进行字段值验证,如果遇到验证错误,会抛出ValidationError异常,阻止模型保存。

下面提供两个实例进行说明。

示例1

假设有如下的模型定义:

class Book(models.Model):
    title = models.CharField(max_length=50)
    author = models.CharField(max_length=30)
    genre = models.CharField(max_length=50)
    pub_date = models.DateField()

    def __str__(self):
        return self.title

现在想要创建一本新书的实例并将其保存至数据库中:

new_book = Book.objects.create(
    title='Harry Potter and the Philosopher Stone',
    author='J.K. Rowling',
    genre='Fantasy',
    pub_date=datetime.date(1997, 6, 26),
)

这段代码将会构建一个新的Book对象并将其存储在数据库中,同时将titleauthorgenrepub_date字段分别设置为'Harry Potter and the Philosopher Stone''J.K. Rowling''Fantasy'datetime.date(1997, 6, 26)

示例2

假设有如下的模型定义:

class User(models.Model):
    name = models.CharField(max_length=50)
    age = models.PositiveIntegerField()

    def __str__(self):
        return self.name

现在需要以用户提供的数据创建一个新的用户实例,并验证输入数据是否合法或有误:

from django.core.exceptions import ValidationError

try:
    new_user = User.objects.create(
        name='John Doe',
        age=25,
    )
except ValidationError as e:
    print("Error: {}".format(str(e)))

这段代码尝试创建一个新的User对象并将其存储在数据库中,而且将nameage分别设置为字符串'John Doe'25。如果有不合法的内容,比如说age输入-1,那么调用create()方法时将会抛出一个ValidationError异常来提示该字段值无效。

本文链接:http://task.lmcjl.com/news/16133.html

展开阅读全文