Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 非空约束失败:帐户\u myuser.password_Django_Django Forms_Modelform_Notnull - Fatal编程技术网

Django 非空约束失败:帐户\u myuser.password

Django 非空约束失败:帐户\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”。它工作得很好,我可以用下面的代码成功地注册用户。谁能

我正在django中开发一个web应用程序,用户可以在其中创建帐户。我以明文形式存储用户密码,因为我的系统中的身份验证不完全依赖于密码,还依赖于otp。在注册的POST请求中,我突然面临的问题是“NOTNULL约束失败:accounts_myuser.password”。我尝试删除数据库和迁移,然后重新迁移,但没有帮助。我在下面给出了ModelForm和Model(自定义的)。我的模型中只描述了两个字段,即“email”和“username”。它工作得很好,我可以用下面的代码成功地注册用户。谁能帮帮我吗

forms.py models.py TLDR
密码
字段添加到元类的
字段
,如下所示:

class Meta:
    model = User
    fields = ['username', 'email', 'password']
类元:
模型=用户
字段=[“用户名”、“电子邮件”、“密码”]

如果您没有将字段添加到
字段
,Django将不会从
表单

中获取/接受数据,当您调用方法
创建用户
创建超级用户
时,您是否正在为
密码
关键字传递有效值

因为,如果您将空密码(
None
)传递给这两个方法中的任何一个,这肯定会引发 passwerod字段上出现“非空约束失败”错误

  • delete save()方法

  • 刷新页面

  • 添加数据(其不会添加到数据库中)

  • 萨姆比特数据

  • 再次添加save()方法


  • 你为什么要展示你的经理而不是你的模特?您到底是在使用
    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']