Форма 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...

Если у кого-нибудь есть светлая идея, чтобы помочь заставить это работать, я буду благодарен за любую помощь.

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