Trying to connect Django form and extended user model, but struggling to get the form to save. Basically, I'm able to authenticate user, but not save information to the CustomUser model or "profile" model for the user.
I feel like I fundamentally don't understand how to extend the user model, so if you have some advice to that affect that would be very helpful.
#views.py
def registration(request):
if request.method == "POST":
form = CustomUserCreationForm(request.POST)
if form.is_valid():
custom = form.save(commit=False)
user = request.user
custom = user.profile()
custom.key = "".join(random.choice(string.digits) for i in range(20))
custom.save()
username = form.cleaned_data['username']
password = form.cleaned_data['password2']
user = authenticate(request, username=username, password=password)
messages.success(request, f'Your account has been created! Please proceed to agreements and payment.')
return redirect('other_page')
else:
form = CustomUserCreationForm(request.POST)
return render(request, 'registration.html', {'form': form})
Here is my models.py
class CustomUser(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
key = models.CharField(max_length=25, null=True, blank=True)
first_name = models.CharField(max_length=25)
last_name = models.CharField(max_length=25)
username = models.CharField(max_length=25)
password1 = models.CharField(max_length=25)
password2 = models.CharField(max_length=25)
@receiver(post_save, sender=User)
def create_custom_user(sender, omstamce, created, **kwargs):
if created:
CustomUser.objects.create(user=instance)
@receiver(post_save, sender=User)
def save_user_profile(sender, instance, **kwargs):
if instance.CustomUser.save()
def __str__(self):
return f'{self.first_name} ({self.last_name})'
In settings.py I added "AUTH_PROFILE_MODULE = 'app.CustomUser'". However, I'm getting this error:
AttributeError: 'User' object has no attribute 'profile'