Сбой ограничения NOT NULL: store_customer.first_name

Сбой ограничения NOT NULL: store_customer.first_name Метод запроса: GET URL запроса: http://127.0.0.1:8000/signup/. Версия Django: 4.1.4 Тип исключения: IntegrityError Значение исключения:
Сбой ограничения NOT NULL: store_customer.first_name

models.py

class Customer(models.Model):

   first_name = models.CharField(max_length=50)
   last_name = models.CharField(max_length=50)
   phone = models.CharField(max_length=50)
   email = models.EmailField(max_length=100)
   password = models.CharField(max_length=500)


   def register(self):
       self.save()

  def __str__(self):
        return self.first_name 

views.py

def signup(request):

  if request == 'GET':
      return render(request, 'signup.html')

  else:
    first_name = request.POST.get('firstname')
    last_name = request.POST.get('lastname')
    phone = request.POST.get('phone')
    email = request.POST.get('email')
    password = request.POST.get('password')

    customer = Customer(first_name=first_name, last_name=last_name,phone=phone,email=email,password=password)
    customer.register()

   

    # return HttpResponse( 'signup successful' )
    return render(request, 'signup.html')

Вы отправляете имя и фамилию в форме? По умолчанию 'models.CharField' имеет опцию null и 'blank', установленную в false Django ref. - это означает, что при сохранении нужно установить не null, а что-то другое

Ваша ошибка говорит о том, что имя_первой_фамилии не было отправлено в POST-запросе (из формы).

Не нужно обрабатывать GET запросы, они автоматически обрабатываются Django Просто обрабатывайте POST запросы следующим образом...

models.py

class Customer(models.Model):

    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)
    phone = models.CharField(max_length=50)
    email = models.EmailField(max_length=100)
    password = models.CharField(max_length=500)

    def __str__(self):
        return self.first_name 

views.py

def signup(request):
    if request == 'POST': #<------- handled POST request
        first_name = request.POST.get('firstname')
        last_name = request.POST.get('lastname')
        phone = request.POST.get('phone')
        email = request.POST.get('email')
        password = request.POST.get('password')
        customer = Customer(first_name=first_name, last_name=last_name,phone=phone,email=email,password=password)
        customer.save()
        return redirect('/signup/')
    return render(request, 'signup.html') #<------- handled GET request
Вернуться на верх