Django не видит связи и при отправке формы дает ошибку 'User' object has no attribute 'profile_user'

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

В момент регистрации я хочу заполнять модель из формы. В интернете нашел способы, но почему то не один не работал. А я просто хочу в момент регистрации брать данные из формы и заполнять модель которая связанная с User

models:

from django.db import models
from django.conf import settings
from django.db.models.signals import post_save
from django.dispatch import receiver
from django.contrib.auth.models import User





class ProfileUser(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,default=1)
    first_name = models.CharField(max_length=120)
    last_name = models.CharField(max_length=200)
    age = models.CharField(max_length=5)
    address = models.CharField(max_length=1000,default='Екатеринбур')
    number_phone = models.CharField(max_length=100)
    email = models.EmailField(max_length=200)


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

forms:

from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm

class SigUpForm(UserCreationForm):
    username = forms.CharField(max_length=128)
    email = forms.EmailField(max_length=200)
    age = forms.CharField(max_length=100)
    number_phone = forms.CharField(max_length=100)
    adress = forms.CharField(max_length=1000)
    first_name = forms.CharField(max_length=120)
    last_name = forms.CharField(max_length=200)
    
    class Meta:
        model = User
        fields = ('username','first_name','last_name','age','number_phone','adress','email','password1','password2')

views:

from django.shortcuts import render, redirect
from django.contrib.auth import login, authenticate
from .forms import SigUpForm
from .models import ProfileUser

def update_user(user):
    ProfileUser.objects.update_or_create(user=user)


def RegForm(request):
    if request.method == 'POST':
        form = SigUpForm(request.POST)
        if form.is_valid():
            user = form.save(commit=False)
            user.save()
            form.save_m2m()

            age = request.POST.get('age')
            profile = user.profile_user
            profile.age = age
            profile.save()

            username = form.cleaned_data.get('username')
            password = form.cleaned_data.get('password1')
            user = authenticate(username=username,password=password)
            login(request,user)
        
        return redirect('home')
    else:
        form = SigUpForm()
    return render(request, 'Earth/registration/RegForm.html',{'form':form})

Потом сохраняю ее в signals

Ответы

Ответов пока нет.