Django обновление формы пользователя

здесь проблема с формой, все поля применяются, кроме поля аватара. я не могу понять почему.

формы

class UserEditForm(forms.ModelForm):
    class Meta:
        model = User
        fields = ['username', 'name', 'email', 'bio', 'avatar']
        exclude = ()
        widgets = {
            'avatar': forms.FileInput(),
            'bio': forms.Textarea(),
        }

просмотров

@login_required(login_url='login')
def edit_profile(request):
    user = request.user
    form = UserEditForm(instance=user)

    if request.method == 'POST':
        form = UserEditForm(request.POST, request.FILES, instance=user)
        if form.is_valid():
            form.save()
            return redirect('get_author', pk=user.id)
    return render(request, 'account/edit_profile.html', {'form': form})

шаблон

<form class="form-horizontal" role="form" method="POST" action="">
                {% csrf_token %}

                <div class="col-md-3">
                    <div class="text-center">
                        <img src="{{ request.user.avatar.url }}" class="avatar img-circle" alt="avatar"
                             style="width: 100px; height: 100px;">
                        <h6>Upload a different photo...</h6>
                        {{ form.avatar }}
                    </div>
                </div>

... другие поля

Спасибо за помощь

Вам необходимо указать enctype="…" атрибут [mozilla-dev] формы: это объясняет, как файлы будут закодированы:

<form enctype="multipart/form-data" class="form-horizontal" role="form" method="POST" action="">
   …
</form>

Вам нужно обновить код шаблона и использовать 'multipart/form-data' в теге формы, чтобы загрузить файлы как часть объекта запроса.

<form class="form-horizontal" role="form" method="POST" action="" enctype="multipart/form-data">
                {% csrf_token %}
                <div class="col-md-3">
                    <div class="text-center">
                        <img src="{{ request.user.avatar.url }}" class="avatar img-circle" alt="avatar"
                             style="width: 100px; height: 100px;">
                        <h6>Upload a different photo...</h6>
                        {{ form.avatar }}
                    </div>
                </div>
</form>
Вернуться на верх