Django小技巧06: get_or_create

翻译整理自: simpleisbetterthancomplex.com

get_or_create 是查找对象的一种便捷方法, 其最大的功能点是在目标对象不存在的时候, 可以根据参数创建对象。

它实际上返回一个(object, created)元祖,第一个元素是您要检索 get 的模型的实例,第二个元素是个是否创建的布尔值,用户判断实例是否是创建的。

如果实例已经存在数据库中, 并且通过参数可以找到, 那么 created 为 False, 反之则会创建, created 为 True。

定义个名为AppSettings的模型, 你可以在此存储配置:

Python

obj, created = AppSettings.objects.get_or_create(name='DEFAULT_LANG')
obj.value = request.POST.get('DEFAULT_LANG')
obj.save()

如上面代码所示, 如果这是我第一次运行这段代码保存名为DEFAULT_LANG的配置,get_or_create将创建一个实例并在数据库中保留。 如果这是我第二次或者第三次调用此段代码, 它只会更新现有实例, 而原有的实例ID和name不会改变.

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏LanceToBigData

JavaWeb(一)Servlet中的ServletConfig与ServletContext

前言   前面我介绍了一下什么是servlet,它的生命周期,执行过程和它的原理。这里我们做一个简单的回顾!   什么是Servlet?   servlet 是...

2016
来自专栏维C果糖

史上最简单的 MySQL 教程(十二)「记录长度」

MySQL 中规定:任何一条记录最长不超过 65535 个字节,这意味着varchar永远达不到理论最大值。

3757
来自专栏逍遥剑客的游戏开发

UE4学习笔记: Functions

35510
来自专栏JavaEdge

MyBatis Generator 用法详解 XML配置详解 3. <generatorConfiguration>的子元素MyBatis Generator中文文档

5077
来自专栏技术博客

设计模式之一(单例模式)

单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。

1222
来自专栏pangguoming

Mongoose学习参考文档

一、快速通道 1.1 名词解释 Schema : 一种以文件形式存储的数据库模型骨架,不具备数据库的操作能力 Model : 由Schema发布生成的模...

4029
来自专栏跟着阿笨一起玩NET

sql 多条件查询的一种简单的方法

4472
来自专栏JAVA后端开发

activiti通过扩展点重写节点行为

在activit项目中,有时需要重写节点的behaviour,但如果将代码反编译,会为后续升级,及项目打包带为不方便。   其实 acitivit已经提供了扩...

3575
来自专栏小灰灰

动手实现MVC: 1. Java 扫描并加载包路径下class文件

背景 用过spring框架之后,有个指定扫描包路径,然后自动实例化一些bean,这个过程还是比较有意思的,抽象一下,即下面三个点 如何扫描包路径下所有的clas...

2507
来自专栏Albert陈凯

Hadoop数据分析平台实战——070深入理解MapReduce 02(案例)离线数据分析平台实战——070深入理解MapReduce 02

离线数据分析平台实战——070深入理解MapReduce 02 Shuffle阶段说明 shuffle阶段主要包括map阶段的combine、group、sor...

3136

扫码关注云+社区

领取腾讯云代金券