Форма профиля частично не сохранена

После первой регистрации происходит переход на новую форму - можно ввести email профиля, фото, био, ссылки на twitter, github и другие социальные сети, участвуют 2 модели: ProfileUser и User. Когда человек написал что хотел и нажал на кнопку, после перехода он нажал на пользователя и его перекинуло на страницу профиля, но там кроме почты ничего из ранее введенного не отображается , при попытке изменить профиль тоже ничего не отображается, в форме ничего нет, зашел в админ панель в модели, только пользователь тоже устанавливается автоматически при переходе на создание профиля после регистрации, остальные данные просто не вводятся, подскажите пожалуйста как это исправить

Пользователь представляется мне, потому что это есть в регистрации

profile = ProfileUser.objects.create(user=new_user)

Я пытался переделать его согласно этой статьене получилось

models.py

class ProfileUser(models.Model):
   user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.SET_NULL, null=True)
   img = models.ImageField(null=True, blank=True, upload_to='static/images/',  validators=[img__size])
   birthday = models.DateField(blank=True, null=True)
   about = models.TextField(max_length=1000, null=True)

   #? social media
   twitter = models.URLField(null=True, blank=True)
   facebook = models.URLField(null=True, blank=True)
   instagram = models.URLField(null=True, blank=True)
   telegram = models.URLField(null=True, blank=True)
   vk = models.URLField(null=True, blank=True)
   reddit  = models.URLField(null=True, blank=True)
   github = models.URLField(null=True, blank=True)

   def __str__(self):
       return 'Profile for user {}'.format(self.user.username)

forms.py

class UserEditForm(ModelForm):
   class Meta:
       model = User
       fields = ['email']
class ProfileEditForm(ModelForm):
   class Meta:
       model = ProfileUser
       fields = ['birthday', 'img', 'about', 'twitter', 'facebook','instagram', 'telegram','vk','reddit', 'github']

views.py Создайте профиль:

def createProfile(request):
   UserForm = UserEditForm()
   ProfileForm = ProfileEditForm()

   if request.method == 'POST':
      print(request.POST)
      UserForm = UserEditForm(request.POST)
      ProfileForm = ProfileEditForm(request.POST)
      if ProfileForm.is_valid():
        UserForm.save()
        ProfileForm.save()
        return redirect('base:home')

context = {'UserForm': UserForm,'ProfileForm': ProfileForm}
return render(request, 'base/profileForm.html', context)

Обновить профиль:

@login_required(login_url='base:login')
def updateProfile(request,pk):
   user = User.objects.get(id=pk)
   UserForm = UserEditForm(instance=user)
   ProfileForm = ProfileEditForm(instance=user)
   if request.method == 'POST':
      ProfileForm = ProfileEditForm(request.POST,instance=user)
      UserForm = UserEditForm(request.POST,instance=user)
      if UserForm.is_valid():
          UserForm.save()
          ProfileForm.save()
          return redirect('base:home')

context = {'user': user,'UserForm': UserForm,'ProfileForm': ProfileForm}
return render(request, 'base/profileForm.html', context)

profileForm.html

{% block content %}
<form class="login__form" method='POST' action="." enctype="multipart/form-data">
   {% csrf_token %}
   {{ProfileForm.media}}
   {{UserForm.as_p}}
   {{ProfileForm.as_p}}
   <input type="submit" class="btn btn-min" value="Сохранить">
</form>
{% endblock content %}

Вам нужно будет передать экземпляр ProfileUser, соответствующий пользователю, в ProfileEditForm в updateProfile.

ProfileForm = ProfileEditForm(instance=user.profileuser)
Вернуться на верх