gpt4 book ai didi

python - django-我如何为查询创建排序以将一个特定元素放在第一位,然后按某个字段保留?

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

具体来说,我希望获得用户的查询。我的 User 模型有一个 first_namelast_name 字段。我需要做的是将 request.user 排序在结果的顶部,其余用户按 last_name、first_name 按字母顺序排列。最后一部分很简单:

q = User.objects.all().order_by('last_name', 'first_name')

但是我不确定如何确保 request.user 是查询中的第一个结果。这一切都是针对 django 休息框架 View 完成的,因此(我相信)我需要通过传递到序列化器的查询来完成它。

最佳答案

首先,不这样做可能是更好的设计。如果需要,可以让其他端点返回您自己的用户对象,并且在 ListView 中对待自己没有什么不同。但如果你真的需要的话。

您可能可以使用注释。

User.objects.annotate(is_me=Case(
When(pk=request.user.pk, then=Value(True)),
When(pk__ne=request.user.pk, then=Value(False)),
output_field=BooleanField())
).order_by('-is_me')

关于python - django-我如何为查询创建排序以将一个特定元素放在第一位,然后按某个字段保留?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48569659/

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