我正在构建Django查询的动态排序。我添加了其他列进行排序,如下所示:
class MyModel(models.Model):
order_column = models.IntegerField()
class Meta:
ordering = ('order_column',)
,现在需要在每次更改/排序操作时相应地更新其值。现在,我通过以下方式进行操作:
def some(self):
my_query = MyModel.objects.all()
my_list = list(my_query)
pop_index = 4
insert_index = 2
obj = my_list[pop_index]
my_list.insert(insert_index, obj)
for i, item in enumerate(my_list):
item.order_column = i
item.save()
它可以工作,但是我不喜欢for循环中的save
。我知道要更新查询,可以调用query.update
,所以我尝试了:
my_query.update(order_column=lambda x: images_list.index(x))
但是它不起作用。有没有办法在单个表达式(例如update)中实现这一目标?