首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django queryset差分法松序

问Django queryset差分法松序
EN

Stack Overflow用户
提问于 2019-03-06 22:01:38
回答 1查看 169关注 0票数 1

我正在尝试使用Django在查询集上构建的差分方法,但是在使用了差分方法之后,排序似乎已经消失了。

代码语言:javascript
复制
objects = self.get_index_children()
print("objects are %s ordered" % objects.ordered)

featured_recipes = objects.filter(featured=True)[:3]
print("featured_recipes are %s ordered" % featured_recipes.ordered)

latest_recipes = objects.difference(featured_recipes)
print("latest_recipes are %s ordered" % latest_recipes.ordered)  




objects are True ordered
featured_recipes are True ordered
latest_recipes are False ordered . <----

这应该是这样的吗?还是在django一边的错误?如果是这样的话,是否有适当的方法来找出两个查询集之间的区别?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-06 23:53:10

difference()转换成一个EXCEPT子句,其语法依赖于数据库后端。

对于SQLite,Django在difference()的两边使用有序查询集时会抛出一个错误。

对于Postgres,允许对子查询进行排序,但它只影响子查询(只有当子查询被切片时才有意义)。

对于两个后端,要对结果查询进行排序,需要向结果查询集添加一个显式.order_by(...):

代码语言:javascript
复制
q3 = q1.difference(q2).order_by('name')

关于你的最后一个问题,这是difference。函数返回一个查询集,其中包含一个查询集中的元素,减去一个或多个其他查询集中的元素。排序在这里没有直接的关系。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55032856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档