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)

  

 

Django create和save方法的更多相关文章

  1. Django创建对象的create和save方法

    Django的模型(Model)的本质是类,并不是一个具体的对象(Object).当你设计好模型后,你就可以对Model进行实例化从而创建一个一个具体的对象.Django对于创建对象提供了2种不同的s ...

  2. django中ModelForm save方法 以及快速生成空表单或包含数据的表单 包含错误信息

    django中ModelForm学习系列一~save方法 Model代码 from django.db import models # Create your models here. class P ...

  3. Django model重写save方法及update踩坑记录

    一个非常实用的小方法 试想一下,Django中如果我们想对保存进数据库的数据做校验,有哪些实现的方法? 我们可以在view中去处理,每当view接收请求,就对提交的数据做校验,校验不通过直接返回错误, ...

  4. Django:form.save()方法

    参考:https://blog.csdn.net/it_yuan/article/details/53580756 背景: 之前的博客是不支持上传文章缩略图的,后来新增了此功能,但是发现修改老的文章时 ...

  5. django model form 保存方法 django-rest-framework save 修改某一项值 方法

    django Model Form django-rest-framework save 方法 修改某个数据的值

  6. 覆盖Django mysql model中save方法时碰到的一个数据库更新延迟问题

    最近有一个需求,通过django的admin后台,可以人工配置5张表的数据,这些数据进行一些业务规则处理后会统一成一份数据缓存在一个cache之中供服务端业务访问,因而任何一张表的数据更新(增.删.改 ...

  7. Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法

    Django 资源 与 知识 Django中自建脚本并使用Django环境 model中的save()方法说明 filter()用法 2018/11/06 Chenxin 资料说明 Django基础入 ...

  8. Django的DRF序列化方法

    安装rest_framework -- pip install djangorestframework -- 注册rest_framework序列化 -- Python--json -- 第一版 用v ...

  9. CakePHP采用model的save方法更新数据所需查询

    采用model的save方法更新数据所需查询 1. 验证时候要确认是update 或者 create,以便使用对应规则 public $validate = array( 'field_name' = ...

随机推荐

  1. Docker镜像构建的两种方式(六)--技术流ken

    镜像构建介绍 在什么情况下我们需要自己构建镜像那? (1)当我们找不到现有的镜像,比如自己开发的应用程序 (2)需要在镜像中加入特定的功能 docker构建镜像有两种方式:docker commit命 ...

  2. Js的reduce()方法

    Js 数组reduce()方法应用一个函数针对数组的两个值(从左到右),以减至一个值. 语法:array.reduce(callback[, initialValue]) 参数说明: 1)callba ...

  3. Java基础:HashMap假死锁问题的测试、分析和总结

    前言 前两天在公司的内部博客看到一个同事分享的线上服务挂掉CPU100%的文章,让我联想到HashMap在不恰当使用情况下的死循环问题,这里做个整理和总结,也顺便复习下HashMap. 直接上测试代码 ...

  4. 流程控制值while 循环

    一.结束循环的两种方式 1. 修改条件tag=Truewhile tag: print(1) print(2) print(3) tag=False print(4) 2.while + break ...

  5. 驰骋工作流引擎JFlow与activiti的对比之2种结构化模式

    1. 任意循环(Arbitrary Cycles) ACTIVITI : 某一个或多个活动可以反复执行. 例子:用户买了瓶汽水,拿到汽水后,中了一瓶,又去兑换了一瓶汽水,如果又中了,再去兑换一瓶汽水- ...

  6. 总结:web 发展的4个阶段

    一.概述 随着人们的需求发展,web技术的发展也经历了多个阶段,下一个阶段总是伴随着解决上一阶段的问题,从静态文本.动态执行.动态自动生成文本,web应用,到web2.0,本文就详细描述这些阶段的特征 ...

  7. Mac 终端 显示隐藏文件

    defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder //显示隐藏文件 defaults wr ...

  8. pthread_exit在main线程中的用处

    在main线程中调用pthread_exit会起到只让main线程退出,但是保留进程资源,供其他由main创建的线程使用,直至所有线程都结束,但在其他线程中不会有这种效果 https://stacko ...

  9. RN开发中的报错以及告警

    报错一: Attempted to transition from state `RESPONDER_INACTIVE_PRESS_IN` to `RESPONDER_ACTIVE_LONG_PRES ...

  10. GIT的使用(Gitlab上传本地仓库代码,Webstorm修改更新)

    准备:GIT的安装,Gitlab账户登陆,webstorm的安装 1.首先,你得先会在Gitlab中创建一个团体,在团体中创建一个项目,先建组,再建项目,网上哪里都有教程,随便找了个网址: https ...