我希望用户能够使用 JavaScript 对表中的对象列表进行排序。然后,在 django 函数中,我想根据相同的顺序而不是属性对这些对象进行排序。
这可能吗?我正在考虑将 pk 列表从模板传递到 View ,然后根据此列表对对象进行排序,但我还没有找到方法来做到这一点。
最佳答案
我认为查询集不可能做到这一点。尝试以下操作:
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/