Поле обновления набора запросов Django увеличивает / уменьшает текущее значение - PullRequest
13 голосов
/ 06 сентября 2010

Я пытаюсь изменить порядок узлов в моем дереве.Все работает нормально, но я хотел бы знать, есть ли какой-нибудь красивый и простой способ обновления нескольких полей путем увеличения его фактического значения на 1. Позвольте мне проиллюстрировать.

Objtree.objects.select_related().filter(pk__in = ids).update(sort_order = 1)

Этот код изменит каждый столбец sort_orderзначение до 1, но я хотел бы изменить его на что-то вроде:

Objtree.objects.select_related().filter(pk__in = ids).update(sort_order += 1)
# or
Objtree.objects.select_related().filter(pk__in = ids).update(self.sort_order = 1)

Итак ... есть что-то подобное?Ничто не приходит мне в голову или мой экран через поиск в Google.

Спасибо за помощь!

1 Ответ

22 голосов
/ 06 сентября 2010

Вы хотите использовать F() объектов.

from django.db.models import F
Objtree.objects.filter(pk__in=ids).update(sort_order=F('sort_order')+1)

См. документацию

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