在传递给 Django 中的表单集之前更新查询集的字段
update field of queryset before passing to formset in django
我有一个包含旅行者年龄的查询集。
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),如果为真,应该在传递给查询集到表单集之前将旅行者的年龄更新一年。所以我正在做这样的事情
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
您可以结合使用更新和 F
来增加一个字段
qset = Travellers.objects.filter(traveller_type='1')
qset.filter(is_renewal=True).update(age=F('age') + 1)
travellers_formset = TravellersFormset(queryset = qset)
由于 qset
未被更新评估(过滤器 return 编辑了一个新的查询集)它将 return 评估时更新的行
我有一个包含旅行者年龄的查询集。
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),如果为真,应该在传递给查询集到表单集之前将旅行者的年龄更新一年。所以我正在做这样的事情
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
您可以结合使用更新和 F
来增加一个字段
qset = Travellers.objects.filter(traveller_type='1')
qset.filter(is_renewal=True).update(age=F('age') + 1)
travellers_formset = TravellersFormset(queryset = qset)
由于 qset
未被更新评估(过滤器 return 编辑了一个新的查询集)它将 return 评估时更新的行