django queryset способен обновить поле собственной модели существующим значением + 1? - PullRequest
0 голосов
/ 18 мая 2018

извините, если название не имеет особого смысла, я не уверен, как правильно излагать его, используя только маленькие слова.

В любом случае, я действительно хочу ... Я знаю, что мыможно filter querysets, затем использовать update, чтобы обновить все поля в queryset без выполнения цикла, тогда save()

Но здесь мне действительно нужно что-то вроде ......

User.objects.filter().update(username=this is where I want to update BUT I want to update itself's username+1)

если я сделаю это в замешательстве, это будет что-то вроде

all_users = User.objects.filter()
for user in all_users:
    user.username = user.username + str(1)
    user.save()

, но есть ли способ использовать update и сделать это?

Заранее спасибо за любую помощь.

1 Ответ

0 голосов
/ 19 мая 2018

Это можно сделать с помощью F() из django.db.models

from django.db.models import F
User.objects.filter(pk=pk).update(new_attr=F('username')+str(1))

или

all_users = User.objects.filter()
for user in all_users:
   user.username =  F('username') + str(1)
   user.save()
...