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

【Django】QuerySet以及Pickle 序列化在Django中的深度运用详解

但是,如果使用切片语法的step参数,Django将执行数据库查询并返回一个列表。对执行的QuerySet进行切片也会返回一个列表。...entry_list = list(Entry.objects.all()) Pickle序列化/缓存。有关拾取QuerySet的详细信息,请参阅下一节。在本节中,从数据库中读取结果非常重要。...Django为此提供了count()方法。 Pickle 序列化 QuerySet 如果pickle以序列化QuerySet,这将强制在pickle序列化之前将所有结果加载到内存中。...annotation()的每个参数都是一个注释,将添加到返回的QuerySet中的每个对象。 Django提供的聚合函数在以下聚合函数中进行了描述。...,即使是默认排序,也可以在不带参数的情况下调用order() 可以检查QuerySet有序属性确定查询是否排序。

1.8K10

Django 2 DateTimeField格式 在程序中手动赋值

DateTimeField.auto_now 这个参数的默认值为false,设置为true时,能够在保存该字段时,将其值设置为当前时间,并且每次修改model,都会自动更新。...因此这个参数在需要存储“最后修改时间”的场景下,十分方便。...需要注意的是,设置该参数为true时,并不简单地意味着字段的默认值为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值;如果使用django再带的admin管理器,那么该字段在admin...中是只读的。...与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法在程序中手动为字段赋值,在admin中字段也会成为只读的。

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

    Django 2 DateTimeField格式 在程序中手动赋值

    DateTimeField.auto_now 这个参数的默认值为false,设置为true时,能够在保存该字段时,将其值设置为当前时间,并且每次修改model,都会自动更新。...因此这个参数在需要存储“最后修改时间”的场景下,十分方便。...需要注意的是,设置该参数为true时,并不简单地意味着字段的默认值为当前时间,而是指字段会被“强制”更新到当前时间,你无法程序中手动为字段赋值;如果使用django再带的admin管理器,那么该字段在admin...中是只读的。...与auto_now类似,auto_now_add也具有强制性,一旦被设置为True,就无法在程序中手动为字段赋值,在admin中字段也会成为只读的。

    72920

    08.Django基础六之ORM中的锁和事务

    因为如果将事务跟 HTTP 请求绑定到一起的时,然而view 是依赖于应用程序对数据库的查询语句效率和数据库当前的锁竞争情况。...()中的代码打破了数据完整性约束,你仍然可以在add_children()中执行数据库操作,并且create_parent()产生的更改也有效。...需要注意的是,在调用handle_exception()之前,generate_relationships()中的修改就已经被安全的回滚了。因此,如果有需要,你照样可以在异常处理函数中操作数据库。...尽量不要在atomic代码块中捕获异常 因为当atomic块中的代码执行完的时候,Django会根据代码正常运行来执行相应的提交或者回滚操作。...担心主要集中在DatabaseError和它的子类(如IntegrityError)。如果这种异常真的发生了,事务就会被破坏掉,而Django会在代码运行完后执行回滚操作。

    2.2K40

    因为 Django ORM update,我今天差点「从删库到跑路」

    我又跑了一遍程序,没想到打脸来的如此之快,update_time 字段还真的没更新。 于是,我改了一点程序,确保入库数据和数据库中的数据是不同的,又跑了一遍。...然后我把 update() 方法改成 update_or_create() 方法又跑了一遍,因为我上次把 update_or_create() 改成了 update(), update_time 字段更新了...= models.DateTimeField(auto_now=True, verbose_name="更新时间") create_time 在第一次新增数据时创建,之后便不再改变,update_time...但,update_time 并非每次都更新,比如使用上文提到的 update_or_create() 方法会更新,save() 方法也会更新。因为这两个方法都是走的 Django ORM。...而更适用于批量操作的 update() 方法则是直接执行数据库 SQL,不走 Django ORM,所以 update_time 也就得不到更新。那要想更新怎么办呢?

    1.1K10

    Django debug page XSS漏洞(CVE-2017-12794)分析

    Django发布了新版本1.11.5,修复了500页面中可能存在的一个XSS漏洞,这篇文章说明一下该漏洞的原理和复现,和我的一点点评。...我们可以做个简单的测试,在Django命令行下,我们创建一个username为phith0n的用户,然后再次创建一个username为phith0n的用户,则会抛出一个IntegrityError异常:...为什么Django会引入这样一个异常机制?这是为了方便开发者进行SQL错误的调试,因为Django的模型最终是操作数据库,数据库中具体出现什么错误,是Django无法100%预测的。...最后,在500页面中,__cause__被输出。 0x03 漏洞复现 经过我的测试,我发现在使用Postgres数据库并触发异常的时候,psycopg2会将字段名和字段值全部抛出。...那么,如果字段值中包含我们可控的字符串,又由于0x02中说到的,这个字符串其实就会被设置成__cause__,最后被显示在页面中。

    1.6K41

    2017年9月6日

    django事务处理 django可以设置所有http requests级别的事务,通过给配置文件的数据库部分配置TOMIC_REQUESTS = True, 这相当于给每一个view的函数都加了 @transaction.atomic...装饰器,但是个别方法想不用事务, 只需要在方法上加上 @transaction.non_atomic_requests即可 在整个方法上开启事务可以在方法上加 @transaction.atomic 在代码块上加事务可以用...withtransaction.atomic():上下文管理器 如果想在事务rollback的时候操作,一定要在with外面加except from django.db import IntegrityError...9.在django的测试TestCase中,测试方法开启一个事务,并在执行完后回滚,所以里面的on_commit注册的方法总不会被执行。...: transaction.savepoint_rollback(sid) c.save() # Succeeds, and a.save() is never undone 在这个例子中b.save

    95560

    关于“Python”的核心知识点整理大全59

    例如,在项目“学习笔记”中,应用程序的最高层数据是主题,而 所有条目都与特定主题相关联。只要每个主题都归属于特定用户,我们就能确定数据库中每个条 目的所有者。...中的模型User,然后在Topic中添加了字段owner,它建 立到模型User的外键关系。...在2处的输出中,Django指出我们试图给既有 模型Topic添加一个必不可少(不可为空)的字段,而该字段没有默认值。...在3处,Django给我 们提供了两种选择:要么现在提供默认值,要么退出并在models.py中添加默认值。在4处,我们 选择了第一个选项,因此Django让我们输入默认值(见5)。...如果请求的主题不归当前用户所有,我们就引发Http404 异常(见2),让Django返回一个404错误页面。

    14410

    Django新增数据

    因为在你调用 save() 之前,没有办法表中的 id 的值应该是多少,因为这个值是由你的数据库计算出来的,而不是由 Django 计算出来的。...save()方法也被用来更新数据,如前所述,如果你在保存新对象的时候指定了主键的值,如果这个值在数据库中已经存在,那么插入操作,就变成了更新操作。...Django每个非抽象的 Model 类必须有一个 Manager 实例添加到其中。Django 确保在你的模型类中至少指定了一个默认的 Manager。...Manager 是一种接口,它赋予了 Django 模型操作数据库的能力。Django 应用中每个模型拥有至少一个 Manager,就是默认的objects. 以上这些描述来自Django官方文档。...那么对 create() 的调用就会以一个 IntegrityError 失败,因为主键必须是唯一的。

    78630

    django 字段类型_access的数据库类型是

    默认情况下,BinaryField设置editable为False,在这种情况下,他不能包含在ModelForm中,在django2.1中进行了修改:旧版本不允许设置editable为True。...最大长度在django的验证中使用强制执行MaxLengthValidator。...**注意:**在模型中使用FileField或ImageField时,需要执行以下几个步骤: l 在settings.py中定义MEDIA_ROOT为django设置存储上载文件的目录的完整路径(这些文件并未直接存储在数据库中...在PostgreSQL上使用时,它存储在uuid数据类型中,否则存储在 中char(32)。 是通用的唯一标识符,可以很好的替代带有的 primary_key的AutoField字段。...**PROTECT:**通过引发ProtectedError的子类来防止删引用的对象,是django.db.IntegrityError的子类。

    3.9K30

    Django开发密码管理表实例【附源码】

    文章及代码比较基础,适合初、中级人员,高手略过 阅读此篇文章你可以: 获取一个Django实现增删改查的案例源码 了解数据加密的使用场景和方法以及如何在Python3中使用 背景介绍 DBA需要维护一张密码表...,主要记录数据库中创建的账号密码信息,大概如下: ?...代码中用到了Django的一个QuerySet API可能部分人没有用过update_or_create,这里详细介绍下 update_or_create(defaults=None, **kwargs...看一下我们的需求,存储的时候要加密存储,但也要能对加密后的数据进行解密以获取原始密码,那么就要求加密算法既支持加密,也支持解密,对于md5这种只支持加密的单向算法就不能选择了,在支持加解密的算法中应用最为广泛的当属...'message': str(err)} if __name__ == '__main__': print(create_rsa_key()) 执行脚本生成RSA秘钥对,将RSA秘钥对配置在加解密的代码中

    1K20

    【Django 2.2文档系列】Model 外键中的on_delete参数用法

    场景 我们用Django的Model时,有时候需要关联外键。关联外键时,参数:on_delete的几个配置选项到底是干嘛的呢,你知道吗? 参数介绍 models.CASCADE 级联删除。...Django会模拟SQL约束的行为,在删除此条数据时,同事删除外键关联的对象。...如果后端数据库有强制关联操作,这是容易报错:IntegrityError,除非你在数据库中手动添加了SQL的ON DELETE约束。...欢迎查看我的这个系列的其他文章: django-admin和manage.py的用法[1] 编写自定义manage.py 命令[2] Django组件——forms组件[3] 还有更多内容,请查看Bigyoung.../posts/5/ [3] Django组件——forms组件: https://www.bigyoung.cn/posts/47/

    2K10
    领券