Модель не хочет сохранять данные из формы при регистрации Djnago

Рейтинг: 0Ответов: 1Опубликовано: 01.03.2023

Я получаю из формы данные типа Имя, Фамилия, почта, пароль, логин. После хочу передать их из формы в модель в момент регистрации. Пользователь появляется в User, но данные в модель не передаются, хотя запись появляется. В записи только связь с User, то есть поля first_name, last_name, email в модели ProfileUser пустые.

Views:

def RegForm(request):
form = SigUpForm(request.POST)
if form.is_valid():
    
    user = form.save()
    user.refresh_from_db()
    user.ProfileUser.first_name = form.cleaned_data.get('first_name')
    user.ProfileUser.last_name = form.cleaned_data.get('last_name')
    user.ProfileUser.email = form.cleaned_data.get('email')
    user.save()
    
    username = form.cleaned_data.get('username')
    password = form.cleaned_data.get('password1')
    user = authenticate(username,password)
    login(request,user)
    
    return redirect('home')
else:
    form = SigUpForm()
return render(request, 'Earth/registration/RegForm.html',{'form':form})

models:

class ProfileUser(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
first_name = models.CharField(max_length=120)
last_name = models.CharField(max_length=200)
email = models.EmailField(max_length=200)

def __str__(self):
    return self.user.username

@receiver(post_save, sender=User)
def update_profile_signal(sender, instance, created, **kwargs):
    if created:
        ProfileUser.objects.create(user=instance)
    instance.ProfileUser.save()

Ответы

▲ 0

Попробуйте так

user = form.save(commit=False)
user.first_name = form.cleaned_data.get('first_name')
user.last_name = form.cleaned_data.get('last_name')
user.email = form.cleaned_data.get('email')
user.save()

Хотя не совсем понятно что внутри SigUpForm. Если это ModelForm то эти строки лишние.