IntegrityError at / null value in column "last_name" violates not-null constraint

Viewed 20

I have web app which includes authentication. I have form, but when I enter my credentials and click submit I get an error: IntegrityError at /accounts/professor_register/ null value in column "last_name" violates not-null constraint.

view

from .forms import ProfessorSignupForm
class ProfessorSignup(CreateView):
    model = User
    form_class = ProfessorSignUpForm
    template_name = 'authentication/dubai.html'

    def form_valid(self, form):
        user = form.save()
        login(self.request, user)
        return redirect('/')

form

class ProfessorSignUpForm(UserCreationForm):
    first_name = forms.CharField()
    last_name = forms.CharField()
    phone = PhoneNumberField()

    class Meta(UserCreationForm.Meta):
        model = User

    @transaction.atomic
    def save(self):
        user = super().save(commit=False)
        user.is_professor = True
        user.is_staff = True
        user.save()
        professor = Professor.objects.create(user=user)
        professor.first_name = self.cleaned_data.get('first_name')
        professor.last_name = self.cleaned_data.get('last_name')
        professor.username = self.cleaned_data.get('username')
        professor.email = self.cleaned_data.get('email')
        professor.password = self.cleaned_data.get('password')
        professor.save()
        return user

models

class User(AbstractUser):
    is_pupil = models.BooleanField(default=False)
    is_instructor = models.BooleanField(default=False)


class Professor(models.Model):
    user = models.OneToOneField(User, on_delete = models.CASCADE, primary_key = True)
    first_name = models.CharField(max_length=20, null=False)
    last_name = models.CharField(max_length=30, null=True)
    username = models.CharField(max_length=30, unique=True, null=True)
    email = models.EmailField(unique=True, null=False)
    password = models.CharField(max_length=60, null=False)
    phone_number = PhoneNumberField(null=False, blank=False, unique=True)

I am using postgresql as database.

I have no idea why this is happening. Every stack answer I tried to replicate gives me another error:(

0 Answers
Related