Я пытаюсь создать форму, чтобы пользователь мог загрузить аватар в свой профиль. У меня есть класс, который выглядит следующим образом:Django. Доступ к дополнительному полю пользователя
class UserProfile(models.Model):
user = models.OneToOneField(User, related_name='profile')
picture = models.FileField(upload_to='media/images', blank=True, null=True)
и теперь я хочу, чтобы получить доступ к области picture
в моих взглядах, так что я могу поставить некоторые картины в нем. Я пытаюсь это сделать так:
if request.method == 'POST':
userForm = SignupForm(request.POST, instance=user)
profileForm = ProfileForm(request.POST, request.FILES)
if userForm.is_valid():
...
user.profile.picture = request.POST['picture']
...
profileForm.save()
return HttpResponseRedirect('/')
...
, а затем передать его в шаблон. Я где-то читал, что могу использовать такое поле через related_name
, указанный в моделях, так вот что я пробовал. Но когда я пытаюсь загрузить изображение он говорит: User has no profile.
Также я читал о get_profile()
функцию много, но как я понял, что это depricatred настоящее.
Итак, пожалуйста, расскажите, как я могу получить доступ к этому полю?
Может быть, я все делаю неправильно? Если да, то каков правильный способ делать такие вещи?
Спасибо за ответ! Я добавил подтверждение для обеих форм. Можете ли вы привести пример о том, как создать объект профиля? Когда вы говорите об отдельном профиле, вы имеете в виду 2 модели? Думаю, мне это не нужно, но я не знаю, как я могу расширить модель пользователя по умолчанию другим способом. –