Поле 'xxx' ожидало число, но получило <django.forms.boundfield.BoundField>
Вот мой код: В файле forms.py
class ProjectForm(forms.ModelForm):
class Meta:
model = Project
fields = ("title","business_partner","transaction")
widgets = {
'transaction': forms.NumberInput()
}
В views.py
def uploadpdf(request,pk):
project_form = ProjectForm(request.POST)
if project_form.is_valid() and request.FILES:
project_form.instance.user = request.user
project = Project.objects.get(id=pk)
project.title = project_form['title']
project.business_partner = project_form['business_partner']
project.transaction = project_form['transaction']
project.save()
project = Project.objects.get(id=pk)
file_path = None
for file in request.FILES:
file = request.FILES[file]
pdf_file = PDFFile(file=file, filename=file.name)
pdf_file.project = project
pdf_file.save()
if PRODUCTION:
file_path = HOST_NAME +'/'+ str(pdf_file.file)
else:
file_path = HOST_NAME +'/media/'+ str(pdf_file.file)
resp = HttpResponse(f'{{"message": "Uploaded successfully...", "id": "{project.id}","url":"{file_path}","title": "{project.title}"}}')
resp.status_code = 200
resp.content_type = "application/json"
return resp
else:
return reverse("dashboard:homepage")
Когда я запускаю это, он пишет "TypeError: Поле 'transaction' ожидало число, но получило <объект django.forms.boundfield.BoundField по адресу 0x000001A803935250>."
С нетерпением жду хорошего решения.
Вы хотите использовать атрибут clean_data формы вместо самого поля, как показано ниже:
project.transaction = project_form.cleaned_data['transaction']