Django中create和save方法的不同

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

本文深入解析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 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。