Django中create和save方法的不同


Posted in Python onAugust 13, 2019

前言

Django的模型(Model)的本质是类,并不是一个具体的对象(Object)。当你设计好模型后,你就可以对Model进行实例化从而创建一个一个具体的对象。Django对于创建对象提供了2种不同的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方法创建对象有2步,而且编程人员容易忘记加上save(),Django提供了一个更便捷的create方法,如下。如果你使用create方法,无需再加上save()。create方法不仅创建了新的对象,而且直接将信息存储到数据库里。

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

User自带的create_user方法

如果你要Auth自带的User模型创建新对象,你需要使用create_user方法,而不是create方法,如下所示。create_user方法很有用,自动会给密码加Hash。

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

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。

Python 相关文章推荐
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
Mar 22 Python
Tensorflow中使用tfrecord方式读取数据的方法
Jun 19 Python
python数据结构之线性表的顺序存储结构
Sep 28 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
Jan 23 Python
Python微医挂号网医生数据抓取
Jan 24 Python
pandas删除行删除列增加行增加列的实现
Jul 06 Python
python库matplotlib绘制坐标图
Oct 18 Python
浅谈python中频繁的print到底能浪费多长时间
Feb 21 Python
python实现翻译word表格小程序
Feb 27 Python
django form和field具体方法和属性说明
Jul 09 Python
Python文件夹批处理操作代码实例
Jul 21 Python
matplotlib subplot绘制多个子图的方法示例
Jul 28 Python
Python学习笔记之函数的定义和作用域实例详解
Aug 13 #Python
Python爬取智联招聘数据分析师岗位相关信息的方法
Aug 13 #Python
python基于json文件实现的gearman任务自动重启代码实例
Aug 13 #Python
Python 写入训练日志文件并控制台输出解析
Aug 13 #Python
基于MATLAB和Python实现MFCC特征参数提取
Aug 13 #Python
Python 使用 docopt 解析json参数文件过程讲解
Aug 13 #Python
Django项目中实现使用qq第三方登录功能
Aug 13 #Python
You might like
基于PHP+MySQL的聊天室设计
2006/10/09 PHP
xajax写的留言本
2006/11/25 PHP
一个捕获函数输出的函数
2007/02/14 PHP
linux命令之调试工具strace的深入分析
2013/06/03 PHP
php使用Jpgraph绘制简单X-Y坐标图的方法
2015/06/10 PHP
使用PHP编写发红包程序
2015/07/22 PHP
php实现json编码的方法
2015/07/30 PHP
基于PHP实现用户注册登录功能
2016/10/14 PHP
laravel 解决路由除了根目录其他都404的问题
2019/10/18 PHP
greybox——不开新窗口看新的网页
2007/02/20 Javascript
Javascript代码在页面加载时的执行顺序介绍
2013/05/03 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
移动节点的jquery代码
2014/01/13 Javascript
jquery实现背景墙聚光灯效果示例分享
2014/03/02 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
Jquery插件easyUi实现表单验证示例
2015/12/15 Javascript
jQuery事件与动画基础详解
2017/02/23 Javascript
vue生成随机验证码的示例代码
2017/09/29 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
详解webpack 打包文件体积过大解决方案(code splitting)
2018/04/10 Javascript
浏览器事件循环与vue nextTicket的实现
2019/04/16 Javascript
vue-cli设置css不生效的解决方法
2020/02/07 Javascript
python实现带声音的摩斯码翻译实现方法
2015/05/20 Python
Django 前后台的数据传递的方法
2017/08/08 Python
Python使用matplotlib绘制多个图形单独显示的方法示例
2018/03/14 Python
Python如何使用k-means方法将列表中相似的句子归类
2019/08/08 Python
解决python父线程关闭后子线程不关闭问题
2020/04/25 Python
PHP如何去执行一个SQL语句
2016/03/05 面试题
优秀的自荐信要注意哪些
2014/01/03 职场文书
环境建设实施方案
2014/03/14 职场文书
仓库规划计划书
2014/04/28 职场文书
学习型党组织建设经验材料
2014/05/26 职场文书
读《工匠精神》有感:热爱工作,精益求精
2019/12/28 职场文书
一小时迅速入门Mybatis之bind与多数据源支持 Java API
2021/09/15 Javascript
一次项目中Thinkphp绕过禁用函数的实战记录
2021/11/17 PHP
Mysql使用全文索引(FullText index)的实例代码
2022/04/03 MySQL