我将 Django 对象设置为:
class Example(models.Model):
count = models.CharField(default="0")
Run Code Online (Sandbox Code Playgroud)
因此,如果我有一些对象ex1, ex2, ex3,ex4它们的计数分别为 -1、0、5、-6。我希望能够查询对象并将它们排序为[0, 5, -6, -1]任何零首先出现的顺序,然后是正数,然后是负数,同时每个部分也按升序排列。我正在考虑使用类似的东西,Example.objects.order_by('count')但没有找到一种方法来使用像这样的自定义函数来做到这一点。
我正在查看的另一条路线如下所示:
objs = Example.objects.all()
sorted_objs = sorted(objs, key = lambda o: int(o.count))
Run Code Online (Sandbox Code Playgroud)
有没有办法使用 sorted 方法先对零进行排序?我无法找到一个。
我使用的最后一种方法是:
objs = Example.objects.all()
zero_objs = []
positive_objs = []
negative_objs = []
for obj in objs:
if obj.count == 0:
zero_objs.append(obj)
elif obj.count < 0:
negative_objs.append(obj)
else:
postitive_objs.append(obj)
sorted_objs = zero_objs + sorted(postitive_objs) + sorted(negative_objs) …Run Code Online (Sandbox Code Playgroud)