为解决Django的并集、交集和差分操作的一些缺点而设计的库。

django-delayed-union的Python项目详细描述


django-delayed-union库的设计目的是解决一些 django's并、交和差的缺点 操作。尤其是,一旦执行了其中一个操作, QuerySet上的某些方法将不起作用:

>>> qs = User.objects.filter(id=1)
>>> unioned_qs = qs.union(qs)
>>> should_be_empty_qs = unioned_qs.exclude(id=1)
>>> user, = list(should_be_empty_qs); user.id
1

为了解决这个问题,django-delayed-union提供 一组槲寄生的包装纸。这些包装器实现了 类似于QuerySet的接口,延迟执行联合, 交叉或差分运算,直到需要为止:

>>> from django_delayed_union import DelayedUnionQuerySet
>>> qs = User.objects.filter(id=1)
>>> unioned_qs = DelayedUnionQuerySet(qs, qs)
>>> empty_qs = unioned_qs.exclude(id=1)
>>> list(empty_qs)
[]

通常返回新的QuerySet的操作 返回一个新的DelayedQuerySet,操作应用于 查询集。

这段代码的一个有用之处是 mysql query planner为 视图的查询集 使用了OR条件。通过使用DelayedUnionQuerySet, 子类可以在 仍然保持高效的查询计划。

  • 自由软件:BSD 3条款许可证

安装

pip install django-delayed-union

开发

要运行所有测试,请运行:

tox

更改日志

0.1.2(2018-12-14)

  • 增加了对嵌套联合和交叉口的支持

0.1.1(2018-07-16)

  • 缓存了应用延迟操作后生成的QuerySet。

0.1.0(2018-03-14)

  • pypi上的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java使用CSPRNG中的序列种子PRNG安全吗?   java如何使JTable列大小与内容精确(或紧密)匹配?   java Android textview具有两种不同大小的文本   java在任意事物的列表(数组)中创建关联的最佳方法是什么?   java保存可扩展字符串?   java成员类(内部类)如何访问外部类的实例变量?   java使用Android 6.0(API级别23)使用rest的最佳方式是什么   java为什么我会收到“学习记录”。Student@25a43blb'尝试显示链接列表中的所有对象时?   java如何将SVG文本转换为SVG路径?   java Paypal返回URL参数支付状态   java Libgdx:导出到可运行Jar   java JPA获取连接实体的最小/最大属性   附加到类型变量的java编号?   java Object[]到底是什么?   java如何在安卓中的片段和活动之间共享数据   java使用MinGW为windows构建linux库   java将变量值传递给eval函数   java仅在转换完成时使方法返回   Java二维数组对角线