Django中create和save方法的不同

方予
方予
发布时间:2026-10-13 | 2人浏览过
原创

本文深入解析Django中Model的两种核心保存方式:save()与create()。通过对比代码示例,说明save()需先实例化再调用保存,而create()一步完成对象创建与入库。此外,特别指出Auth用户模型应使用create_user以自动处理密码哈希,帮助开发者选择更合适的数据持久化方案。

前言

save与create方法的核心区别

Django中的模型(Model)本质上是类定义,而非具体的对象实例。在定义好模型结构后,开发者可以通过实例化该类来创建具体的对象。针对对象的创建与持久化,Django提供了save()和create()两种不同的机制,本文将详细剖析这两者的具体差异。

首先,我们参考以下已定义的Person模型示例。


from django.db import models
 
class Person(models.Model):
 name = models.CharField(max_length=128)
 
 def __str__(self):
  return self.name

使用save方法创建对象

若要通过save()方法创建一个名为lucifer的具体对象,可按如下方式操作。需要注意的是,只有显式调用save()方法后,Django才会将该对象的数据写入数据库。


lucifer= Person(name="lucifer")
lucifer.save()

使用create方法创建对象

由于save()方法涉及实例化与保存两个步骤,且开发者容易遗漏save()调用,Django提供了更为便捷的create()方法。如示例所示,使用create()时无需再手动调用save()。该方法不仅创建了新对象,还直接将数据持久化到数据库中。


lucifer = Person.objects.create(name="lucifer ")

Auth用户模型的特殊保存方式

User自带的create_user方法

当使用Django内置的Auth User模型创建新用户时,应优先使用create_user()而非通用的create()。如代码所示,create_user()能自动对密码进行哈希处理,从而提升安全性。


user1 = User.objects.create_user(username=username, username=password)

总结

以上就是本文的全部内容,希望这些关于Django模型保存方法的解析能对您的学习或工作有所帮助。感谢大家对本站的支持。

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表