Как сохранить изображение в проекте Django
Когда я пытаюсь создать нового сотрудника в моем проекте, экземпляр был сохранен, но изображение нет.
вот моя модель, представление и форма из моего проекта django моя модель-
`class Emp(models.Model):
emp_first_name=models.CharField(max_length=20,null=False)
emp_last_name=models.CharField(max_length=20,null=False)
emp_father_name=models.CharField(max_length=15,blank=False,default='')
emp_mother_name=models.CharField(max_length=15,blank=False,default='')
emp_photo=models.ImageField(null=True,blank=True,upload_to='static/image/emp',)`
Мое мнение-
`def EmpAdd(request):
if request.method=='POST':
form=EmpForm(request.POST,request.FILES)
if form.is_valid():
form.save()
messages.success(request,'New Employee has been added')
else:
messages.error(request,'There has been error')
else:
form=EmpForm()
return render(request,'emp/emp_crt.html',{'form':form})`
Моя форма -
`class EmpForm(ModelForm):
class Meta:
model=Emp
fields='__all__'
widgets={
'emp_id':TextInput(attrs={'class':'form-control',}),
'emp_bod':DateInput(attrs={'type':'date','class':'form-control',}),
'emp_first_name':TextInput(attrs={'class':'form-control',}),
'emp_last_name':TextInput(attrs={'class':'form-control',}),
'emp_father_name':TextInput(attrs={'class':'form-control'}),
'emp_mother_name':TextInput(attrs={'class':'form-control'}),
'emp_photo':FileInput(attrs={'class':'form-control'}),
}`
Когда я пытаюсь создать нового сотрудника в моем проекте django, новый сотрудник был создан, но изображение не было сохранено. что мне делать?
В коде, который вы опубликовали, нет ничего плохого. Хотя вы пропустили файл template
, именно в нем и кроется проблема. Довольно распространенная ошибка - отсутствие enctype
на вашей html-форме:
<form action="{% url 'reverse-url' %}" method="POST" enctype="multipart/form-data">
{%csrf_token%}
{{form.as_p}}
<button type="submit">submit</button>
</form>
Без него данные файла не прикрепляются к форме.