在一个查询或更少查询中设置枚举索引

时间:2013-12-04 14:27:54

标签: django

我的问题是我有这段代码。

reset_numbers = Picture.objects.filter(author__id=author.id)

for index, pic in enumerate(reset_numbers):
    pic.number = index
    pic.save()

我想重置图片的顺序。 如何在一个查询或更少的查询中执行此操作以摆脱for循环?

有没有办法做到这一点?

1 个答案:

答案 0 :(得分:1)

pks = Picture.objects.filter(author__id=author.id).values_list('pk', flat=True)
for index, pk in enumrate(pks):
    Picture.objects.filter(pk=pk).update(number=index)

这只加载主键,只更新number字段。但查询计数与原始代码相同。