Django 非空约束失败:帐户\u myuser.password
我正在django中开发一个web应用程序,用户可以在其中创建帐户。我以明文形式存储用户密码,因为我的系统中的身份验证不完全依赖于密码,还依赖于otp。在注册的POST请求中,我突然面临的问题是“NOTNULL约束失败:accounts_myuser.password”。我尝试删除数据库和迁移,然后重新迁移,但没有帮助。我在下面给出了ModelForm和Model(自定义的)。我的模型中只描述了两个字段,即“email”和“username”。它工作得很好,我可以用下面的代码成功地注册用户。谁能帮帮我吗 forms.py models.py TLDRDjango 非空约束失败:帐户\u myuser.password,django,django-forms,modelform,notnull,Django,Django Forms,Modelform,Notnull,我正在django中开发一个web应用程序,用户可以在其中创建帐户。我以明文形式存储用户密码,因为我的系统中的身份验证不完全依赖于密码,还依赖于otp。在注册的POST请求中,我突然面临的问题是“NOTNULL约束失败:accounts_myuser.password”。我尝试删除数据库和迁移,然后重新迁移,但没有帮助。我在下面给出了ModelForm和Model(自定义的)。我的模型中只描述了两个字段,即“email”和“username”。它工作得很好,我可以用下面的代码成功地注册用户。谁能
将
密码
字段添加到元类的字段
,如下所示:
class Meta:
model = User
fields = ['username', 'email', 'password']
类元:
模型=用户
字段=[“用户名”、“电子邮件”、“密码”]
如果您没有将字段添加到
字段
,Django将不会从表单
中获取/接受数据,当您调用方法创建用户
或创建超级用户
时,您是否正在为密码
关键字传递有效值
因为,如果您将空密码(None
)传递给这两个方法中的任何一个,这肯定会引发
passwerod字段上出现“非空约束失败”错误
你为什么要展示你的经理而不是你的模特?您到底是在使用
create\u user
还是create\u superuser
?因为,如果向这两个方法中的任何一个传递空密码,就会触发此错误。@Rodrigos是的,这就是问题所在!未生成任何密码并将其作为密码传递!非常抱歉给您带来不便!好的,我会在一张纸上写一个正确的答案moment@RodrigoRodrigues非常感谢!但当我意识到我错在哪里时,我解决了它!当然可以,但是在StackOverflow中,我们总是试图让问题得到正确的回答,所以当有相同问题的人在互联网上搜索时,他们可以很容易地看到解决方案!
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
class Meta:
model = User
fields = ['username', 'email', 'password']