我们对order\u by/distinct字段有限制。 从docs:“order为_by()的字段必须以distinct()中的字段开头,顺序相同”
下面是用例:
class Course(models.Model):
is_vip = models.BooleanField()
...
class CourseEvent(models.Model):
date = models.DateTimeField()
course = models.ForeignKey(Course)
我们的目标是获取课程,按最近的日期订购,但vip优先。在
解决方案如下:
^{pr2}$但由于这一局限性,导致了一个错误。在
是的,我理解为什么在使用distinct时排序是必要的-我们得到每个值的第一行,当然,如果我们不指定顺序,我们将得到一些任意行。 但是,把秩序限制在同一个领域的目的是什么?在
如果我将order_by更改为('course_id','-course_uis_vip','date',)它将给我一行课程,但课程的顺序与目标没有任何共同之处。在
除了遍历整个queryset并在循环中过滤它之外,还有什么方法可以绕过这个限制?在
可以使用
id__in
使用嵌套查询。在内部查询中,您可以选择不同的事件,而在外部查询中,您可以对它们进行自定义排序:来自
distinct(*fields)
上的文档:相关问题 更多 >
编程相关推荐