ser*_*erg 5 python sorting django
有没有一种简单的方法可以重用 Django 风格的 QuerySet 排序来对模型对象列表进行排序。
对应的东西:
MyModel.objects.all().order_by('-field', 'parent__field')
Run Code Online (Sandbox Code Playgroud)
只有我得到了 alist(MyModel.objects.all())作为输入,所以我已经得到了所有对象,只需要在内存中对它们进行排序'-field', 'parent__field'。
正如OP在评论中提到的,他已经修改了用于排序的字段的值,现在必须重新排序列表。
虽然可以编写一个简单的 for 循环/推导式来按必需的属性进行排序,但如果您更喜欢 Django ORM 的简洁界面,则可以使用最近的工具以相同的方式lifter操作对象/字典的集合:
import lifter
my_objects = MyModel.objects.all().order_by('-field', 'parent__field')
# ... manipulate my_objects ...
ObjModel = lifter.models.Model('MyModel')
manager = ObjModel.load(my_objects)
results = manager.order_by('-field', 'parent__field')
Run Code Online (Sandbox Code Playgroud)
请注意,可能不直接支持按相关字段(例如parent__field)排序(还?),并且您可能需要使用相关对象的值预先填充该字段。