Вы не вызываете метод save()
после присвоения advisor
. Измените ваше представление на:
def assign_blanks(request):
if request.method == 'POST':
form = assign_blank_form(data=request.POST)
from_value = request.POST.get("from_value", "")
to_value = request.POST.get("to_value", "")
blanks = blank.objects.all()
for b in blanks:
if b.number >= int(from_value) and b.number >= int(to_value):
b.advisor = form.instance.advisor
<b>b.save()</b> # call save method.
print(b.number)
return render(request, 'assign_blanks.html')
else:
form = <b>assign_blank_form()</b> # instantiate a form for GET request.
return render(request, 'assign_blanks.html', {'form':form})
Также вам нужно создать экземпляр формы для запроса GET
. Вы пропускаете ()
после имени вашей формы assign_blank_form
.
Вы можете дополнительно оптимизировать производительность, избегая многократного вызова save()
. Создайте список b.id
в вашем if
состоянии и затем используйте метод update()
. Это обновит несколько записей в одном запросе. Добавление этого фрагмента кода здесь.
blanks = blank.objects.all()
b_ids = []
for b in blanks:
if b.number >= int(from_value) and b.number >= int(to_value):
b_ids.append(b.id)
<b>blank.objects.filter(id__in=b_ids).update(advisor=form.instance.advisor)</b>
return render(request, 'assign_blanks.html')