class Foo(models.Model):
value = models.IntegerField()
class Meta:
ordering = ('value',)
考虑这个查询集:
[<Foo pk=1 value: 0>, <Foo pk=3 value: 2>, <Foo pk=2 value: 5>]
更新查询集的好方法是:
[<Foo pk=1 value: 0>, <Foo pk=3 value: 1>, <Foo pk=2 value: 2>]
所以基本上我希望所有实例都维护它们的顺序,但更新整个查询集,以便每个实例使用其最低可能值来保持层次结构,这基本上可以归结为:
>>> range(0, qs.count())
[0, 1, 2]
我想我可以使用上面的范围,然后在我的查询集中找到Max,通过调用我的范围上的pop()更新它,直到我的范围为空,但这似乎效率低下
答案 0 :(得分:1)
希望以下帮助:
for i, record in enumerate(qs):
record.value = i