Моя страница входа и регистрации не работает, когда я нажимаю на кнопку, и мой конфиг url в порядке
я создаю проект django и постоянно получаю эту ошибку:- django.db.utils.IntegrityError: null value in column «id» of relation «validation» violates not-null constraint ПОДРОБНОСТИ: Failing row contains (null, 7, 839510, 0, 2024-10-29 19:51:34.057435+00, f, null). Я думаю, это как-то связано с моей базой данных, я использую pgadmin
forms.py
from django import forms
from django.contrib.auth.models import User
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.core.exceptions import ValidationError
from .models import Validation
# User Login Form
class UserLoginForm(AuthenticationForm):
username = forms.CharField(max_length=254, required=True)
password = forms.CharField(label="Password", strip=False, widget=forms.PasswordInput)
class Meta:
model = User
fields = ['username', 'password']
# Verification Form
class VerificationForm(forms.Form):
token = forms.CharField(max_length=6, required=True, label="Verification Code")
def clean_token(self):
token = self.cleaned_data['token']
if not token.isdigit() or len(token) != 6:
raise ValidationError("Invalid verification code format.")
return token
# User Registration Form
class UserRegistrationForm(UserCreationForm):
first_name = forms.CharField(max_length=30, required=True)
last_name = forms.CharField(max_length=30, required=True)
email = forms.EmailField(required=True)
class Meta:
model = User
fields = ['username', 'first_name', 'last_name', 'email', 'password1', 'password2']
def clean_email(self):
email = self.cleaned_data['email'].lower()
if User.objects.filter(email=email).exists():
raise ValidationError("A user with that email already exists.")
return email
Вы не должны использовать эту строку в моделях Validation и Link:
id = models.BigAutoField(primary_key=True)
удалите эту строку !
Если вы хотите сохранить строку:
id = models.BigAutoField(primary_key=True)
Вы должны были иметь auto_created = True :
id = models.BigAutoField(primary_key=True, auto_created = True)
В противном случае он равен null, как показано в сообщении об ошибке.
Но на самом деле эта строка не нужна. Django сделает это сам.