По вашему мнению, вы shadow модель CV
, определив переменную local с именем CV
. Действительно, ты пишешь:
<s>CV</s> = req.FILES['CV']
Таким образом, в этом представлении CV
действительно не относится к модели CV
, а к файлу, позже вы затем вызываете конструктор модели CV(..)
, но при этом вызываете вместо этого обработчик файла.
def incarcarecv(req):
context = {
'title': 'title'
}
if req.method == 'POST':
nume = req.POST['nume']
prenume = req.POST['prenume']
telefon = req.POST['telefon']
email = req.POST['email']
<b>cv</b> = req.FILES['CV']
cv_upload = CV(
solicitant=req.user,
nume=nume,
prenume=prenume,
telefon=telefon,
emailContact=email,
)
<b>cv_upload.cv.save(cv.name, cv)</b>
<b>cv_upload.save()</b>
return render(req, '../templates/pagini/incarcare-cv.html', context)
Вам потребуется cv_upload.save()
, поскольку в противном случае вы создаете объект CV
, но не сохраняете его в базе данных.
При этом я настоятельно советую вам использовать a Form
, здесь похоже, что простого ModelForm
будет достаточно. Форма также может проверять вводимые данные и выдавать ошибки, которые вы можете отправить обратно пользователю о том, что отсутствует.
При использовании PEP-8 соглашений об именах также менее вероятно, что такие столкновения имен произойдут.
Вы также должны, в случае успешного запроса POST, перенаправить на страницу. Это Post / Redirect / Get шаблон веб-разработки . В противном случае, если отправка была успешной, если вы отображаете страницу, и пользователь обновляет страницу в браузере, браузер выполнит тот же запрос POST.