Я строю динамическую сортировку запроса 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()
Это работает, но мне не нравится save
в цикле for. Я знаю, что для обновления запроса можно вызвать query.update
, поэтому я попытался:
my_query.update(order_column=lambda x: images_list.index(x))
Но это не работает. Есть ли способ достичь этого в одном выражении, таком как обновление?