gpt4 book ai didi

python - 在查询集中移动一个元素

转载 作者:行者123 更新时间:2023-11-28 21:26:11 24 4
gpt4 key购买 nike

我的 Django View 中有一个查询集。

我想更改其中一项的位置,使其成为查询集的第一个元素。

知道怎么做吗?

编辑:

我有一个查询集:

   qs = UserProfile.objects.filter(myfilter=whatever)

我知道在这个查询集中我有:

   specific_user.userprofile

我想做的是将 user.userprofile 放在我的查询集中的第一个位置,因为我在模板的循环中使用了这个查询集:

    {% for i in qs %}
<div> i.name </div>

而且我想确保列表的第一个名称是 specific_user 的名称。

最佳答案

Django 中的

QuerySet 对象是数据库查询结果的抽象表示。一般而言,它表示稍后可能会在请求查询集中的特定对象时执行的 SQL,但在此之前,不会执行任何查询。所以你不能真的把查询集想象成一个列表,它可能会被任意重新排序。您可以请求使用其 order_by 方法对查询集中的对象进行排序,因此如果您希望某个特定对象排在第一位,它必须在事物的 DB 端具有一些可排序属性,以便它可以被订购。这可以是一列或使用 F expressions 从其列计算的值.

但是,根据您的需要,您似乎可以在您的 View 中列出您的查询集:

profiles = [specific_user.userprofile] + [profile for profile in UserProfile.objects.filter(myfilter=whatever).exclude(id=specific_user.userprofile.id)]

将其添加到您的上下文中并迭代它而不是模板中的原始查询集。

关于python - 在查询集中移动一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13482402/

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