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>