Django Обновление фотографии формы пользователя сохраняется, но не обновляется на самом сайте

Итак, я пробую свои силы в своем первом проекте django самостоятельно после учебников, и я пытаюсь добавить страницу обновления профиля пользователя. Имя пользователя и email обновляются отлично, но когда я пытаюсь обновить картинку профиля, она не обновляется. Хотя файл сохранен в папке media.

forms.py:

class UserUpdateForm(forms.ModelForm):
email = forms.EmailField()

class Meta:
    model = User
    fields = ('username', 'email')

class ProfileUpdateForm(forms.ModelForm):
    class Meta:
        model = Profile
        fields = ('image',)

views.py

@login_required
def profile(request, pk):
    user = User.objects.get(id=pk)
    profile = Profile(user=user)

    user_form = UserUpdateForm(instance=request.user)
    profile_form = ProfileUpdateForm(instance=request.user.profile)

    if request.method == 'POST':
        user_form = UserUpdateForm(request.POST, instance=request.user)
        profile_form = ProfileUpdateForm(
            request.POST, request.FILES, instance=request.user.profile)
        if user_form.is_valid() and profile_form.is_valid():
            user_form.save()
            profile_form.save()
            return redirect('home')

    return render(request, 'registration/profile.html', {'user': user, 'profile': profile, 'user_form': user_form, 'profile_form': profile_form})

{% extends 'base.html' %}
{% load crispy_forms_tags %}

{% block content %}
<h3 class="display-3 mb-3">
    {{ user.username }}
</h3>
<p>
    {{ user.bio }}
</p>

<br>
<img src="{{ user.profile.image.url }}" alt="ok">
<hr>

<hr>
<form action="" method="POST" enctype="multipart/form-data">
    {% csrf_token %}
    <fieldset class="form-group">
        <legend>Profile Info</legend>
        {{ user_form|crispy }}
        {{ profile_form|crispy }}
    </fieldset>
    <button type="submit" class="btn btn-sm btn-primary">Update</button>
</form>
{% endblock %}

Если вам понадобится еще какой-либо код, я обновлю вопрос. В чем именно заключается проблема?

Попробуйте удалить instance=request.user.profile из вашей связанной ProfileUpdateForm. И, возможно, добавить profile.image = request.FILES['image'] и profile.save() после вашей проверки profile_form.is_valid(). Или комбинацию этих двух вариантов.

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