gpt4 book ai didi

python - 获取一个查询中的第一项和最后一项

转载 作者:行者123 更新时间:2023-12-01 01:23:16 25 4
gpt4 key购买 nike

我想获取 Django 中的第一项和最后一项。我当前的代码如下所示:

first = Article.objects.order_by('date').first()
last = Article.objects.order_by('date').last()

但是,这是两个查询。有没有一种方法可以从中进行一次查询?

最佳答案

您可以创建两个查询集的并集。由于这些查询集仅在必要时才进行评估,因此不会评估各个查询集,例如:

qs = Article.objects.order_by('date')[:1].union(Article.objects.order_by('-date')[:1])

这个qs将包含两个元素,因此我们可以通过以下方式获取文章:

a1, a2 = Article.objects.order_by('date')[:1].union(Article.objects.order_by('-date')[:1])

虽然就我个人而言,我认为这只会带来很多额外的困惑。

考虑到表可能包含零个或一个元素,这甚至会让事情变得有点困难,在这种情况下我们需要:

qs = list(Article.objects.order_by('date')[:1].union(
Article.objects.order_by('-date')[:1],
all=True)
)
if qs:
a1, a2 = qs
else:
a1 = a2 = None

但正如所说,也是 @JonClemens ,优化可能不会那么大,特别是与您为了阅读本文而引入的复杂性相比。

关于python - 获取一个查询中的第一项和最后一项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53582538/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com