Почему я не могу обновить изображение в django?

modle.py

class Form(models.Model):
name = models.CharField(max_length=40)
email = models.EmailField()
file = models.ImageField(null=True, blank=True)

class Meta:
    db_table: 'django'  # table name

edit.py

<form action="{% url 'update' user.id %}" method="POST" enctype="multipart/form-data">
        {% csrf_token %}
        <div class="mb-3">
          <label for="exampleFormControlInput1" class="form-label">Name</label>
          <input type="text" class="form-control" id="exampleFormControlInput1" placeholder="name" name="name" value="{{ user.name }}">
        </div>
        <div class="mb-3">
          <label for="exampleFormControlInput" class="form-label">Email address</label>
          <input type="email" class="form-control" id="exampleFormControlInput" placeholder="name@example.com" name="email" value="{{  user.email }}">
        </div>
        <div class="mb-3">
          <label for="exampleFormControlInput2" class="form-label">Image</label>
          <input type="file" class="form-control" id="exampleFormControlInput2" name="{{  user.file }}" >
        </div>
        <div class="mb-3">
            <img src="{{ user.file.url }}" alt="" srcset="" style="width:100px">
        </div>
        <button type="submit" class="btn btn-primary" id="liveToastBtn">submit</button>
    </form>

view.py когда я пытаюсь обновить все поля все обновляется и также удаляет старое изображение но не сохраняет новое изображение в каталог пожалуйста помогите мне

.
def update(request, user_id):
user = Form.objects.get(id=user_id)
form = UserForm(request.POST, request.FILES, instance=user)
if request.method == 'POST':

    if form.is_valid():
        if os.path.exists(user.file.path):
            os.remove(user.file.path)
        form.save()
        return redirect("listing")
    else:  # mean form is invalid
        return render(request, 'edit.html', {'user': user})

В теге file вы установили name="{{ user.file }}" замените его на name="file" как

<input type="file" class="form-control" id="exampleFormControlInput2" name="file">

Атрибуты name вашей html должны соответствовать field имени вашей модели.

Ошибка в этой строке

<input type="file" class="form-control" id="exampleFormControlInput2" name="{{  user.file }}">

{{user.file}} - это данные пользователя, поэтому он показывает данные только в том случае, если вы хотите изменить файл

   <input type="file" class="form-control" id="exampleFormControlInput2" name="file">
Вернуться на верх