Django не видит связи и при отправке формы дает ошибку 'User' object has no attribute 'profile_user'
В момент регистрации я хочу заполнять модель из формы. В интернете нашел способы, но почему то не один не работал. А я просто хочу в момент регистрации брать данные из формы и заполнять модель которая связанная с 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
Источник: Stack Overflow на русском