Я делаю веб-приложение в Django, где пользователи могут создавать учетные записи. Я храню пароли пользователей в незашифрованном виде, поскольку аутентификация в моей системе не полностью зависит от пароля, но также и от OTP. Проблема, с которой я неожиданно столкнулся (раньше она работала нормально) при POST-запросе регистрации, заключается в том, что «ограничение NOT NULL не выполнено: accounts_myuser.password». Я попытался удалить базу данных и миграции и повторно мигрировал, но это не помогло. Я даю ModelForm и Model (custom) ниже. У меня есть только два поля, а именно 'email' и 'username', описанные в моей модели. Это работало нормально, и я мог успешно зарегистрировать пользователей с кодом ниже. Может ли кто-нибудь помочь мне?
forms.py
class UserCreationForm(forms.ModelForm):
password1 = forms.IntegerField(label='Password', min_value=0000, max_value=9999, widget=forms.PasswordInput)
password2 = forms.IntegerField(label='Password Confirmation', min_value=0000, max_value=9999,
widget=forms.PasswordInput)
class Meta:
model = User
fields = ['username', 'email']
def clean_password1(self):
password1 = self.cleaned_data.get('password1')
password2 = self.cleaned_data.get('password2')
if password1 and password2 and password1 != password2:
raise forms.ValidationError("Passwords do not match!")
if len(str(password1)) != 4 or len(str(password2)) != 4:
raise forms.ValidationError("Passwords should be of length Four!")
return password2
def save(self, commit=True):
user = super(UserCreationForm, self).save(commit=False)
user.password = self.cleaned_data['password1']
if commit:
user.save()
return user
models.py
class MyUserManager(BaseUserManager):
def create_user(self, username, email, password=None):
if not email:
raise ValueError('Users must have an email')
user = self.model(
username = username,
email = self.normalize_email(email),
password = password
)
# user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, username, email, password=None):
user = self.create_user(
username, email, password
)
user.is_admin = True
user.is_staff = True
user.set_password(password)
user.save(using=self._db)
return user