Django - 根据模板中用户定义的顺序对对象进行排序

标签 django django-models django-templates

我希望用户能够使用 JavaScript 对表中的对象列表进行排序。然后,在 django 函数中,我想根据相同的顺序而不是属性对这些对象进行排序。

这可能吗?我正在考虑将 pk 列表从模板传递到 View ,然后根据此列表对对象进行排序,但我还没有找到方法来做到这一点。

enter image description here

最佳答案

我认为查询集不可能做到这一点。尝试以下操作:

pk_list = [2, 1, 3, 4]
pk2obj = {obj.pk: obj for obj in Model.objects.all()}
objects_ordered = [pk2obj[pk] for pk in pk_list]

pkg2obj是pk和模型实例对象之间的映射。为了制作一本字典,我使用了 dictionary comprehension .

如果您想省略已删除的对象:

objects_ordered = [pk2obj[pk] for pk in pk_list if pk in pk2obj]

否则,如果您想用默认值替换已删除的对象(以下代码中的None):

objects_ordered = [pk2obj.get(pk, None) for pk in pk_list]

关于Django - 根据模板中用户定义的顺序对对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18212268/

相关文章:

django - 使用 Google BigQuery 作为 Django 的后端

django - 如何在 Django 中用 None 保存 FileField?

python - Django 从管理面板发送邮件

python - 从数组生成 Django 表单

python - 如何在 python 中的 Django shell 中启用历史记录

python - 将 python 依赖项添加到 Docker 容器的好方法是什么?

python - 使现有数据库适应 Django 应用程序

javascript - HighCharts 图表中的单引号未正确显示

python - 返回的每个项目的 Django 阅读索引

django - 如何防止 Django 解释包含弯引号的 block ?