为解决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不支持org。阿帕奇。平民数学3。分配二元分布(1,p)`会带来很多性能开销吗?   java Android开发人员新手无法在模拟器中启动代码   显示不同版本的java版本和javac版本   java在这种情况下如何使用Spring和Hibernate正确更新对象?   java改变了我整个安卓 studio应用程序的主题   java在LIBGDX中生成可执行Jar文件   mysql对sql结果进行排序,并在java中通过循环在表中显示所有结果   swing如何在java中的textArea中新添加的文本末尾自动显示插入符号?   java需要验证时间,但会不断遇到问题   java像字符串一样拆分“数组”   java Apache Camel:具有属性和属性占位符的RecipientList不起作用   java中的文件子目录和主目录监视   java这样使用Spring规范谓词安全吗?   带Eclipselink的java Oracle 12c标识列   java为什么我在socket inputstream中遇到奇怪的字符   java Hibernate+swing检查登录/密码   java Log4j如何仅禁用致命条目   会话失效后找到的java数据   MySql查询:如何使用MySql和java同时执行两个查询?