首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么django中的obj.save()在数据保存到数据库后仍返回'none‘

在Django中,当我们调用obj.save()方法保存数据到数据库时,它会返回None。这是因为save()方法在成功保存数据到数据库后,并不返回任何值。

Django的save()方法用于将对象保存到数据库中。它执行以下操作:

  1. 如果对象已经存在于数据库中,则更新数据库中的对应记录。
  2. 如果对象不存在于数据库中,则创建一个新的数据库记录。

在执行保存操作后,save()方法并不返回任何值,而是将对象的状态更新为已保存状态。

如果我们需要获取保存后的对象,可以在保存后重新查询数据库来获取最新的数据。例如,可以使用obj = Model.objects.get(pk=obj.pk)来获取保存后的对象。

需要注意的是,如果在保存过程中发生了错误,save()方法会引发django.db.IntegrityError或其他相关的异常。在这种情况下,save()方法不会返回None,而是会引发异常,我们可以通过捕获异常来处理错误情况。

总结起来,obj.save()在数据保存到数据库后返回None,因为它的主要目的是将对象保存到数据库中,而不是返回保存后的对象。如果需要获取保存后的对象,可以重新查询数据库来获取最新的数据。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Django ModelForm操作及验证方式

model和form结合体,所以有以下功能: 数据验证 数据库操作 model有操作数据库字段,form验证也有那几个字段,虽然耦合度降低,但是代码是有重复。...=None # 自定义字段类 (也可以自定义字段) localized_fields=('birth_date',) # 本地化,如:根据不同时区显示数据 如: 数据库 2016-12-27 04:10...} # localized_fields=('ctime',) # 哪些字段做本地化 4、ModelForm 数据库操作 4.1、创建数据save 如果数据验证是ok,那么save,就直接在数据库创建完数据了...if obj.is_valid(): obj.save() # 创建数据 如下一对多、多对多关系: class UserType(models.Model): caption = models.CharField...从上面的Form和ModelForm,他们都是继承了BaseForm,而is_valid是BaseForm定义,所以ModelForm也能和Form一样使用各种钩子 额外字段 像网页上checkbox

1.2K10
  • DjangoORM操作

    来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行数据库操作 Django orm优势: Djangoorm操作本质上会根据对接数据库引擎,翻译成对应sql语句;所有使用Django...,如果数据库迁移,只需要更换Django数据库引擎即可; 一、Django连接MySQL 1、创建数据库 (注意设置 数据字符编码) 由于Django自带orm是data_first类型ORM,...settings.py文件设置 连接 MySQL数据库Django默认使用是sqllite数据库) DATABASES = { 'default': { 'ENGINE':...,其主要目的是为了封装底层SQL语句; 1、字符串类(以下都是在数据库本质都是字符串数据类型,此类字段只是Django自带admin中生效) name=models.CharField(max_length...width_field=None, 上传图片高度保存数据库字段名(字符串) height_field=None 上传图片宽度保存数据库字段名

    4.8K10

    Django——实现增删改查总结

    models.py文件每一个类都对应于数据库一张表。 这个类定义变量就是数据库中表相应字段。...只不过现在Django给我们统一了数据库操作,程序开发者无须考虑数据库语句操作,也无需考虑是什么数据库。因为开发者只需要对model进行操作即可实现增删改查。...models.Publisher.objects.create(name="新华出版社") 这样就给数据库中和Publisher对应插入了一条数据,并且这条数据字段name值是新华出版社。...# 将修改保存到数据库 你可能会猜到,get方法是查询,但是你会对get方法id字段存有疑问,明明我们没有前面的Publisher类没有这个变量。...那么为什么会有这个名为id字段呢?这是因为Djangomodels会自动生成一个主键。不信,我给你看看数据库字段,你就明白了。 ?

    1.1K30

    利用django model save方法对未更改字段依然进行了保存

    (id=oid) obj.name = '123' obj.save() handler(obj.id) obj.age = 10 obj.save() print obj.name 最终name...save()保存时,虽然没有更改其它字段,但依然会将内存值,再次存入数据库,子函数和其它进程更改值会被覆盖。...模型保存操作执行前或者执行发送信号 Connecting to signals sent by specific senders (连接到特定发送器发送信号) Some signals get...模型删除操作执行前或者执行发送信号 下面将演示pre_delete与post_delete这两个模型信号使用 ?...和save运行逻辑一样,pre信号先触发,post触发 以上这篇利用django model save方法对未更改字段依然进行了保存就是小编分享给大家全部内容了,希望能给大家一个参考。

    1.7K10

    django 1.8 官方文档翻译: 2-5-6 多数据库

    该设置映射数据库别名到一个数据库连接设置字典,这是整个Django 引用一个数据库方式。字典设置 DATABASES 文档中有完整描述。 你可以为数据库选择任何别名。...1,一个新Person 对象被保存到 first 数据库。...当保存在statement 2发生时,p已经具有一个主键,Django 将尝试数据库上使用该主键。...在你试图保存到second数据库,如果主键已经使用,将会引抛出发一个错误。...另外,一些对象migrate在数据库创建一张表自动创建: 一个默认Site, 为每个模型创建一个ContentType(包括没有存储同一个数据库模型), 为每个模型创建3个Permission

    1.5K20

    Django进阶-3-ORM单表

    一、orm使用方式: orm操作可以使用类实例化,obj.save方式,也可以使用create()形式 二、QuerySet数据类型 QuerySet与惰性机制 所谓惰性机制:Publisher.objects.all...query_set都会对应一块缓存,再次使用该query_set时,不会发生新SQL操作; books=models.Book.objects.all() #这样减小了频繁操作数据库数据库带来压力...models.IntegerField): def db_type(self, connection): return 'integer UNSIGNED' PS: 返回值为字段在数据库属性..., 上传图片高度保存数据库字段名(字符串) height_field=None 上传图片宽度保存数据库字段名(字符串) DateTimeField(DateField)...DateTimeCheckMixin, Field) - 时间格式 HH:MM[:ss[.uuuuuu]] DurationField(Field) - 长整数,时间间隔,数据库按照

    1.4K20

    Django---ORM操作大全

    前言 Django框架功能齐全自带数据库操作功能,本文主要介绍DjangoORM框架 到目前为止,当我们程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb...:(django,根据代码类自动生成数据库表也叫--code first) ORM:Object Relational Mapping(关系对象映射) 类名对应------》数据库表名 类属性对应...---------》数据库字段 类实例对应---------》数据库表里一行数据 obj.id  obj.name.....类实例对象属性 Django orm优势: Djangoorm操作本质上会根据对接数据库引擎...,如果数据库迁移,只需要更换Django数据库引擎即可; 一、Django连接MySQL 1、创建数据库 (注意设置 数据字符编码) 由于Django自带orm是data_first类型ORM,...width_field=None, 上传图片高度保存数据库字段名(字符串) height_field=None 上传图片宽度保存数据库字段名

    6.8K100

    django 源码改写笔记

    一、admin save_model 改写 我们后台项目有用到 django admin 后台模块,有些配置功能完全可以通过 django 就可以实现,不用前端再开发管理页面了,但是有些操作需要自定义...,比如我们配置某个小程序二维码规则,admin 保存配置需要调取微信端接口更新对应配置,admin暴露出来接口只是将数据存到数据库功能,实现保存调取微信 api 接口就要改写 admin...源码 save_mode 方法了,代码如下: from django.contrib import admin # Register your models here. from index.models...AllCustomerManager(models.Manager): # 改变查询结果集 def all(self): # 1.调用父类all, 获取所有数据...返回books是QuerySet集合,还可以继续使用所有查询 return customers class CustomerManager(models.Manager):

    51120

    第15篇-使用Django进行ElasticSearch简单方法

    前一段时间,我Django项目上工作,想实现快速自由文本搜索。我决定使用NoSQL数据库,而不是使用常规数据库来执行此搜索功能(例如MySQL或PostgreSQL)。...我们将很快讨论一些示例,但是首先我需要阐明我们要完成工作: ● 我们本地计算机上设置ElasticSearch并确保其正常运行 ● 设置一个新Django项目 ● 批量索引数据库已经存在数据...● 用户保存到数据库每个新实例索引 ● 基本搜索示例 好吧,这似乎很简单。...Meta内部,您告诉ElasticSearch您希望索引被命名为什么。这将是ElasticSearch参考点,以便当在数据库初始化索引并保存每个创建新对象实例时,它知道要处理索引。...然后,您将生成器传递给常规数据库 actions= 所有 BlogPost 对象并对其进行迭代,并 .indexing() 每个对象上调用方法。为什么要使用发电机?

    5.3K00

    第21篇-使用Django进行ElasticSearch简单方法

    前一段时间,我Django项目上工作,想实现快速自由文本搜索。我决定使用NoSQL数据库,而不是使用常规数据库来执行此搜索功能(例如MySQL或PostgreSQL)。...我们将很快讨论一些示例,但首先我需要阐明我们要完成工作: ● 我们本地计算机上设置ElasticSearch并确保其正常运行 ● 设置一个新Django项目 ● 批量索引数据库已经存在数据...● 用户保存到数据库每个新实例索引 ● 基本搜索示例 好吧,这似乎很简单。...然后,您将生成器传递到常规数据库 所有BlogPost对象并对其进行迭代,并.indexing()每个对象上调用方法。为什么要使用发电机?...它返回a BlogPostIndex并保存到ElasticSearch。 现在让我们尝试一下,看看是否可以对以前创建博客文章进行批量索引。

    3.3K00

    DjangoORM操作-创建数据

    数据库增删改查可以通过管理器对象实现 class Author(models.Model): Author.objects.create() # objects是管理器对象 Django Shell...Django中提供了一个交互式操作项目叫做Django Shell 他能够交互模式 工程代码执行相应操作 注意:代码发生变化时候,请重新进入Django Shell 启动方式:python...manage.py shell 创建数据 Django ORM使用一种直观方式把数据库数据表示成Python对象 创建数据每一条记录就是创建一个数据对象 方法一 Author.objects.create...(key=value,key2=value2....) # key表述数据库列名 values表示值 成功则返回创建好实体对象 失败则抛出异常 (D:\an\envs\My_Project) C:\...beihai",Age=18,Email_addr="12233335@163.com") >>> 方法二 创建Auther实例对象,并调用save方法 obj = Author(Name="随机森林") obj.save

    46930
    领券