Я пытаюсь обновить поле выбора, прежде чем оно будет проверено в Django. Причина этого заключается в том, что поле выбора в значении вопроса - это идентификатор модели, которую я хочу обновить.
def fuelLogSystemOne(request):
entries = FuelLogSystemOneMod.objects.all().order_by('date')
products = productsMod.objects.all()
if request.method == 'POST':
form = forms.AddFuelLogOneForm(request.POST, request.FILES)
productid = form['product'].value()
product = productsMod.objects.get(id=productid)
product_id = request.POST.get('product')
form.fields['product'].choices = [(product.product_type, product.product_type)]
if form.is_valid():
bucketsRemoved = form['buckets_added'].value()
product.stock -= bucketsRemoved
product.save(['stock'])
instance = form.save(commit=False)
instance.staff = request.user
instance.save()
return redirect('home')
else:
form = forms.AddFuelLogOneForm()
return render(request,'systems/fuellogsystemone.html',{'form':form,'entry':entries,'products':products})
В приведенной ниже части я пытаюсь изменить данные формы, прежде чем она будет проверена, поэтому он не говорит «Выберите правильный выбор. 1 не является одним из доступных вариантов '
product_id = request.POST.get('product')
form.fields['product'].choices = [(product.product_type, product.product_type)]
Но когда я впервые отправляю форму, она все еще говорит: "Выберите правильный выбор".
В какой момент Django проверяет форму, потому что я изменяю форму перед методом is_valid (), и она все еще сталкивается с этой ошибкой?