Django中的create()函数是Model类的一个快捷方法,用于同时创建并保存一个新的数据库记录。使用create()函数可以充分利用Django自动化ORM的特点,使代码更加简洁,而不用显示地创建一个Model实例并进行保存。create()函数的语法如下:
class SomeModel(models.Model):
# fields...
@classmethod
def create(cls, **kwargs):
instance = cls(**kwargs)
instance.save()
return instance
其中,cls代表这个Model类本身,kwargs是一个字典,表示新建记录的属性和值。除了create()函数以外,创建和保存Model类的实例的方式还有:
instance = SomeModel(**kwargs)
instance.save()
这种方式相对于用create()函数来说需要写更多的代码,但有时候可能会更加方便,比如需要在创建实例之后再进行其他处理等。但是,用create()的方式不能在实例初始化之后再进行处理。
接下来,给出两个create()方法的实例:
- 使用create()创建User模型的实例
假设我们有一个User模型如下:
class User(models.Model):
name = models.CharField(max_length=20)
email = models.EmailField(unique=True)
is_staff = models.BooleanField(default=False)
def __str__(self):
return self.name
我们可以使用create()方法来创建一个新的User实例:
new_user = User.objects.create(name='John', email='john@domain.com', is_staff=True)
这个语句等同于下面的语句:
new_user = User(name='John', email='john@domain.com', is_staff=True)
new_user.save()
但是,使用create()更加方便,可以减少代码量。
- 使用create()创建Blog、Author和Entry实例
假设我们有三个Model类:Blog,Author和Entry,其中Entry是由一个Blog和一个Author创建的。我们可以使用create()来创建它们的实例:
author = Author.objects.create(name='Jane Doe')
blog = Blog.objects.create(name='Sample Blog', tagline='Sample tagline')
entry = Entry.objects.create(headline='This is an entry', body_text='This is body text', pub_date=datetime.datetime.now(), blog=blog, author=author)
这段代码先创建一个新的Author实例,然后创建一个新的Blog实例,最后使用这两个实例创建一个新的Entry实例。