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