Сбой ограничения 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