обновить поле набора запросов перед передачей в форму набора * 1000 - PullRequest
0 голосов
/ 26 марта 2020

У меня есть набор запросов, который содержит возраст путешественника.

qset = Travellers.objects.filter(traveller_type='1')
print(qset)
print(qset[0].traveller_age)
travellers_formset = TravellersFormset(queryset = qset)

это дает:

<QuerySet [<Travellers: Travellers object (16887)>]>
33

у меня есть флаг (is_renewal), который, если он равен true, должен обновить возраст путешественника за год до передачи в набор запросов в набор форм. так что я делаю что-то вроде этого

if travel_quote.is_renewal:
    print('starting renewal section')
    for each in qset.iterator():
        print(each)
        print(each.traveller_age)
        each.traveller_age = each.traveller_age + 1
        print(each.traveller_age)
print('renewal section completed, checking for updated age')
print(qset[0].get_fields())

это дает

starting renewal section
<QuerySet [<Travellers: Travellers object (16887)>]>
33
34
renewal section completed, checking for updated age
33 <<<<< i want this to be 34 instead of 33 after the loop

1 Ответ

1 голос
/ 26 марта 2020

Вы можете использовать обновление в сочетании с F для увеличения поля

qset = Travellers.objects.filter(traveller_type='1')
qset.filter(is_renewal=True).update(age=F('age') + 1)
travellers_formset = TravellersFormset(queryset = qset)

Так как qset не было оценено обновлением (фильтр возвратил новый набор запросов), он вернет обновленные строки при оценке

...