Как сохранить изображение в проекте 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>

Без него данные файла не прикрепляются к форме.

Вернуться на верх