我试图用django实现一种非常复杂的排序查询集。它是更像是你的评论和你的朋友和家人的评论如何出现在facebook和youtube评论的顶部。你知道吗
为了分解,我将不同的查询集组合到同一个模型中以获得一个结果。你知道吗
my_assinged_tasks = Tasks.objects.filter(to=request.user)
non_assigned_tasks = Tasks.objects.filter(to__isnull=True)
tasks_created_by_my_direct_supervisor = Tasks.objects.filter(**criteria)
suggested_todo_task = ##Some Complex Logic to detect what task are similar to my completed tasks
uncompleted_tasks = ## Criteria
任务=我分配的任务|未分配的任务|由我的直接主管创建的任务|建议的待办任务|未完成的任务|
I want to sort it in order of
1 - tasks_created_by_my_direct_supervisor
2 - my_assinged_tasks
3 - uncompleted_tasks
......
我想到的唯一解决方案是创建一个dict,然后逐个遍历每个查询集结果,并相应地填充dict,这样做非常有效。你知道吗
有没有更有效的方法来实现这一点?你知道吗
看起来你已经有了你想要的任务。根据获取任务后的处理方式,您可以使用
itertools.chain
按顺序返回它们。你知道吗itertools.chain获取多个列表并将元素作为一个iterable生成。你知道吗
您可以使用以下选项:
您可以添加多个注释并根据需要进行排序。
RawSQL
例如,如果需要按特定的用户id进行筛选,则注释可以接收参数。您可以使用SQL语句,如IF
、CASE
、COALESCE
,为要用于排序的带注释列生成所需的值。你知道吗这样你就可以实现两个目标:
QuerySet
,无需将它们反序列化到字典中,它们将已经按正确的顺序排列相关问题 更多 >
编程相关推荐