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

Django小技巧06: get_or_create

翻译整理自: simpleisbetterthancomplex.com get_or_create 是查找对象的一种便捷方法, 其最大的功能点是在目标对象不存在的时候, 可以根据参数创建对象。...它实际上返回一个(object, created)元祖,第一个元素是您要检索 get 的模型的实例,第二个元素是个是否创建的布尔值,用户判断实例是否是创建的。...定义个名为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将创建一个实例并在数据库中保留。

3.1K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Django学习笔记之Django QuerySet的方法

    一般情况下,我们在写Django项目需要操作QuerySet时一些常用的方法已经满足我们日常大多数需求,比如get、filter、exclude、delete神马的感觉就已经无所不能了,但随着项目但业务逻辑越来越复杂...(ip='127.0.0.1', time=, black=False) 6、get_or_create(kwargs) 和 update_or_create...(kwargs) 嗯,看看就知道这个是create的升级版,没错,他们俩一个是在查无此数据后新建一个是更新不存在数据时新建,具体用法同create,get_or_create等效如下过程 try:...,他们返回两个东东: created, obj = get_or_create(**kwargs) 其中created是个bool值,当此方法生成了一个新的model object,此值为True,反之为...答案在这里: django.models 的 on_delete参数,此参数有以下几个可选值: CASCADE:这就是delete()的默认选项,也就是关联删除 PROTECT:如果删除的model obj

    59150

    可重复读事务隔离级别之 django 解读

    由于django1.3(由于历史原因,目前蓝鲸体系内大多数稳定运营的工具系统用的是django1.3)中该问题最为严重,本文先对django1.3环境中的一个应用案例进行分析,说明问题产生的具体原因,然后说明如何有效避免类似问题...,最后介绍较新版本django中事务实现原理(django1.6开始已经很好避免本文案例中的大多数情况),并提供一个django1.8中由于对事务使用不当造成的异常案例。...simple_test执行到get_or_create会尝试插入一条记录key=6e3247f8-31c5-46d7-a3e9-1c855077ea56,但是在此之前后台任务已经向数据库中插入了这个key...,simple_test执行get_or_create的时候mysql就给直接报一致性错误。...到了Django1.6之后已经覆盖了这个默认规范并且将autocommit设置为 on. 因此新版本的django出现上述问题的概率会大大降低。

    1.8K00

    Django笔记(十一)实现对数据库的各种操作,比如分组,排序等

    values()获取每行数据为字典格式 values_list() 获取每行数据为元祖 bulk_create()批量创建数据 get_or_create() update_or_create() in_bulk...from student group by age 那么Django如果实现以上的功能,不仅仅以一个字段进行分组,而且还给查询出的字段起别名 以上生成的sql语句是 SELECT...,获取上一次的值 比如我们想要将一个字段的值加一,不需要每一次都拿出来加一之后再保存,可以这样写 # from django.db.models import F # Tb1.objects.update...# # from django.db import connection, connections # cursor = connection.cursor() 这个是默认的数据源...bulk_create()批量创建数据 get_or_create() # 如果存在,则获取,否则,创建 # defaults 指定创建时,其他字段的值 obj, created

    90610

    Django学习之旅(六)

    本文是 Django 学习之旅的完结篇,主要是讲述 model 层。model 层是与数据库打交道的,其中包括 怎么连接数据库、怎么对数据库进行增删改查等。...我新建一个名为 Django_demo 的项目,在根目录有个名为 db 的 SQLite 数据库。 ?...在 Django 中,一个模型类对应一个数据库的表。因此,一个模型类的实例就表示表中的一条数据。为了输出的数据一目了然,我们需要对上面的 model 进行优化。 ?...5)使用 QuerySet 更新数据 A、单个 object 更新, 适合于 .get(), get_or_create(), update_or_create() 等得到的 obj,和新建很类似。...我们虽然对 Django 已经有大概的认识,仅仅了解些皮毛,但是还需要深入学习,掌握其精髓。后续我会学习然后分享 Django 一些精髓用法。 作者:猴哥,公众号:极客猴。

    1.4K30

    Django之model查select的用法

    import get_object_or_404 _t = get_object_or_404(User, id=724) # get_object_or_404方法,它会先调用django的get...方法,如果查询的对象不存在的话,则抛出一个Http404的异常 实现方法类似于下边这样: from django.http import Http404 try: _t = User.objects.get...(id=724) except User.DoesNotExist: raise Http404 get_or_create 顾名思义,查找一个对象如果不存在则创建,如下: object, created...是一个表示是否创建了新对象的布尔值 实现方式类似于下边这样: try: object = User.objects.get(username='运维咖啡吧') created = False...中能用ORM的就用它ORM吧,不建议执行原生SQL,可能会有一些安全问题,如果实在是SQL太复杂ORM实现不了,那就看看下边执行原生SQL的方法,跟直接使用pymysql基本一致了 from django.db

    75940

    类似于qq空间类型的评论和回复

    最近学习thinkphp,做了一个博客系统,其中感觉实现一个类似于qq空间的评论和回复功能比较复杂,所以把这次的经历记录下来,与大家共勉,具体的方法就不说了,在这里分享一下思路。 ?...其中显示博客的评论和回复的显示是最难的,具体的评论和回复的功能,只要想办法获取到表中相应字段的值接进去就好了, 评论和回复的显示有两种思路: 1....这样就可以对同一张表连接两次了)查询到那个回复的相关内容,在这个成功的基础上,把返回的回复的内容加到相应的comment的div(通过该div的id)的后面。...这两种方法都可以使评论和回复显示类似于qq空间,第一种方法比较简单,但是,需要对数组特别熟悉,将结果拼接起来,第二种方法比较复杂,代码量也多,而且这样执行对服务器的压力比较大,所以建议第一种方法。  ...在点击提交回复的时候 ,获取回复的内容,和评论的div上记录的评论的id,连同之前的user_id(作为reply_to_user_id) 提交到后台,然后在后台获取session的user_id(作为

    1K30

    Django ORM 知识概要

    这个不是SQL标准的一部分,完全由Django处理。 DO_NOTHING:SQL等价物:NO ACTION。...permissions 定义权限 managed 是否按照Django规则管理模型类 默认是True unique_together=()/((),()) 对应MySQL中的联合唯一约束 app_label...指定模型属于哪个应用(如果在settings里面已经注册过应用的话,就不用写这个字段了) db_tablespace 定义数据库表空间的名字 Django 数据表操作 更改数据表 删除数据库表步骤...删除对应的模型类代码 删除migrationd文件夹下面的模型类 删除Django的migrations表中对应的记录 删除数据库表 导入数据 Django shell 导入数据 引入模型 调用模型对象的...() 不返回QuerySet 的 API 获取对象 get(),get_or_create(),first(),last(),latest(),earliest(),in_bulk() 创建对象 create

    1.8K20

    Django model select的各种用法详解

    《Django model update的各种用法介绍》文章介绍了Django model的各种update操作,这篇文章就是她的姊妹篇,详细介绍Django model select的用法,配以对应...方法,如果查询的对象不存在的话,则抛出一个Http404的异常 实现方法类似于下边这样: from django.http import Http404 try: _t = User.objects.get...(id=724) except User.DoesNotExist: raise Http404 get_or_create 顾名思义,查找一个对象如果不存在则创建,如下: object, created...是一个表示是否创建了新对象的布尔值 实现方式类似于下边这样: try: object = User.objects.get(username='运维咖啡吧') created = False...中能用ORM的就用它ORM吧,不建议执行原生SQL,可能会有一些安全问题,如果实在是SQL太复杂ORM实现不了,那就看看下边执行原生SQL的方法,跟直接使用pymysql基本一致了 from django.db

    1.1K30

    【Netty】04 - 利用netty搭建类似于dubbo的rpc框架

    学自蚂蚁课堂项目 项目地址: dubbo原理图 搭建dubbo rpc远程调用框架的思想 搭建dubbo-server 自定义rpc注解,在需要注册到zk上的类加,标识此类需要注册到zk上 将本地服务注册到...zk上 zk上的节点要支持多个,以备之后的集群情况 创建netty的服务器端,并添加相应的handler 通过handler去解析相应,并利用反射执行相应的方法 获取反射调用的结果,再相应给客户端即可...注意对象的序列化与反序列化 将服务注册到zk上需要注意什么? 需要对注册的路径进行编码,否则,添加节点是会出问题 resful协议格式和json协议格式的区别?...rpc采用的是restful风格,一般采用的序列化协议为MessagePack,传递时的数据为:[value1, value2, value3],优点在于更加节省空间,缺点在于不够灵活 http采用序列化协议一般为...json,json采用的是key-value的形式来存值。

    59420

    使用 Rust 开发一款类似于 gitbook 的程序

    我目前是一个活跃的初学者Rust程序员,刚刚开始学习。在我的学习过程中,我对 Rust 有很高的接受度,并非常欣赏其内存管理设计和独特的编程语言功能。...作为 Rust 的初学者,我们都需要一些编程练习来帮助我们进入 Rust 编程的世界。我已经学习 Rust 大约一个星期了,我试图使用 Rust 模仿 MDBook 程序,并开发了一个类似的程序。...GitHub 仓库地址:https://github.com/auula/typikon对于学习一门的新的编程语言而言,最快入门方式就用它来写一些玩具项目或者把以前其他语言写的项目翻译成该语言进行编写,...作为 Rust 新手程,我希望我的项目能引起人们的注意。...Typikon 名称源自 Typikon Book,这是一个类似于 MDBook 和 GitBook 的静态网站渲染工具,但它仅着重于将 Markdown 渲染到在线书中,并且比其他工具更易于使用。

    10120
    领券