Django устанавливает ImageView профиля пользователя

Я уже некоторое время работаю над проектом, в котором я использую Django стандартный экземпляр пользователя, но с дополнительными атрибутами, которые хранятся в "Profile"-модели. Так что сейчас у меня есть назначенная компания и профиль-изображение для пользователя в модели профиля.

Теперь у меня есть детальный вид для редактирования атрибутов пользователя (имя, имя пользователя, email и т.д.). Я использовал generic.DetailView для этого вида. Но это работает только для атрибутов в User-модели из Django. Как я могу также изменить атрибуты в модели профиля при редактировании пользователя?

Это мой Edit-View:

class ProfileUpdateView(LoginRequiredMixin, UpdateView):
    model = User
    fields = ['username', 'email', 'first_name', 'last_name']
    template_name = 'inventory/edit_forms/update_profile.html'
    success_url = '/profile'
    login_url = '/accounts/login'
    redirect_field_name = 'redirect_to'

    def form_valid(self, form):
        profile = Profile.objects.get(user=self.request.user)
        profile.img = self.request.POST.get('profile_img')
        profile.save()     

    return super().form_valid(form)


    def get_object(self):
        return User.objects.get(pk = self.request.user.id)

Это мой HTML:

<form class="edit_object" action="" method="post" enctype='multipart/form-data' class="form-group">
        <div style="width: 20%; margin-bottom: 1rem;">
          <label>Profile Image</label>
          <input name="profile_img" type="file" accept="image/png, image/gif, image/jpeg">
        </div>
        {% csrf_token %}
        {{form|crispy}}
        <input type="submit" value="Submit" class="btn action_btn">
</form>

Как вы видите, я уже пробовал использовать внешнее поле Input и установить изображение таким образом. Но после отправки, атрибут img в Profile-Model просто установлен null и я не знаю почему.

Что я пропустил?

если вы хотите пойти этим путем, используйте request. FILES

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