Как динамически установить значение для поля в Django - PullRequest
0 голосов
/ 21 октября 2019

Я строю динамическую сортировку запроса 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))

Но это не работает. Есть ли способ достичь этого в одном выражении, таком как обновление?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...