Форма Django не может загрузить изображение
Пытаюсь загрузить аватар пользователя на странице профиля, но он ничего не делает при нажатии на кнопку, я установил, что не требуется загружать фотографию профиля, поэтому остальная часть формы работает.
forms.py
class UpdateProfileForm(forms.ModelForm):
class Meta:
model = Profile
fields = ['first_name', 'last_name', 'location', 'bio', 'avatar']
def __init__(self, *args, **kwargs):
super(UpdateProfileForm, self).__init__(*args, **kwargs)
self.fields['avatar'].required = False
views.py
@login_required
def update_profile(request):
context = {}
user = request.user
instance = Profile.objects.filter(user=user).first()
if request.method == 'POST':
form = UpdateProfileForm(request.POST, request.FILES, instance=instance)
if form.is_valid():
print('\n\n form is valid')
form.instance.user = user
form.save()
return redirect('/')
else:
form = UpdateProfileForm(instance=user)
print(errors)
context.update({
'form': form,
'title': 'update_profile'
})
return render(request, 'profiles/settings.html', context)
Из html
<form method="POST" action="." enctype="multipart/form-data">
{% csrf_token %}
<div class="media mb-4">
<img alt="Image" src="{{ user.profile.avatar.url }}" class="avatar avatar-lg" />
<div class="media-body ml-3">
<div class="custom-file custom-file-naked d-block mb-1">
<input type="file" class="custom-file-input d-none" id="{{ form.avatar.id_for_label }}"> <-- This is my label for the button
<label class="custom-file-label position-relative" for="{{ form.avatar.id_for_label }}"> <-- Input field.. nothing happens when press
<span class="btn btn-primary">
Upload avatar
</span>
</label>
</div>
<small>Use an image at least 256px by 256px in either .jpg or .png format</small>
</div>
</div>
<!--end of avatar-->
<div class="form-group row align-items-center">
<label class="col-3">First Name</label>
<div class="col">
<input type="text"
placeholder="First name"
value="{{ user.profile.first_name }}"
name="{{ form.first_name.html_name }}"
id="{{ form.first_name.id_for_label }}"
class="form-control"
required />
{% if form.name.help_text %}
<div class="form-text">{{ form.first_name.help_text }}</div>
{% endif %}
{% for error in form.name.errors %}
<div class="invalid-feedback d-block text-end">{{ error }}</div>
{% endfor %}
</div>
Rest of form continues, but do not see need to keep posting it, it works...
Если у кого-нибудь есть светлая идея, чтобы помочь заставить это работать, я буду благодарен за любую помощь.