Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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
Python 如何使用AbstractBaseUser或AbstractUser创建用户。(登录错误)_Python_Django_Web_Login_Abstract Class - Fatal编程技术网

Python 如何使用AbstractBaseUser或AbstractUser创建用户。(登录错误)

Python 如何使用AbstractBaseUser或AbstractUser创建用户。(登录错误),python,django,web,login,abstract-class,Python,Django,Web,Login,Abstract Class,我正在尝试将我的Person类用作models.py中的用户。但是,我尝试使用AbstractUser和AbstractBaseUser。在我尝试登录时,这两种方法都给了我错误。我尝试了几种方法,直到我意识到我需要比我更有经验和知识的人的帮助 My models.py: from django.contrib.auth.models import AbstractUser from django.db import models class Pessoa(AbstractUser):

我正在尝试将我的Person类用作models.py中的用户。但是,我尝试使用AbstractUser和AbstractBaseUser。在我尝试登录时,这两种方法都给了我错误。我尝试了几种方法,直到我意识到我需要比我更有经验和知识的人的帮助

My models.py:

from django.contrib.auth.models import AbstractUser
from django.db import models

class Pessoa(AbstractUser):
    id_pessoa = models.AutoField(primary_key=True)
    cnpj = models.CharField(max_length=14, unique=True)
    nome = models.CharField(max_length=70)
    email = models.CharField(max_length=100, blank=True, null=True)
    senha = models.CharField(max_length=40, null=False)
    ativo = models.BooleanField(blank=True, null=True)
    datacadastro = models.DateField(blank=True, null=True)
    cidade = models.CharField(max_length=50, blank=True, null=True)
    uf = models.CharField(max_length=2, blank=True, null=True)
    USERNAME_FIELD = 'cnpj'

    class Meta:
        managed = False
        db_table = 'pessoa'
详细信息:我无法在我使用的任何模板中删除或添加字段,因为我使用了
inespectdb
来基于我使用的数据库(与已经充满数据的数据库相同)创建模型。任何变化,除了基本变化,都是经过深思熟虑的

下面是my
视图.py
,其中包含验证登录并重定向到仪表板的def

我使用
print()

user = authenticate(username=username)
它会触发此错误:

文件“C:\Users\Pichau\AppData\Local\Programs\Python\Python37\lib\site packages\django\db\backends\utils.py”, 第85行,in_execute返回self.cursor.execute(sql,params) django.db.utils.ProgrammingError:列pessoa.password不存在 存在第1行:选择“pessoa”,“密码”,“pessoa”,“上次登录”, “佩索阿”

**不管我把密码放在里面,验证错误是 开枪**

这是第二个选项:

当我遇到同样的错误时,如果我删除
p
并使用
return render(请求'dashboard.html')
我将在没有用户id的情况下重定向,这会导致我在仪表板中获取其数据时出现问题

但是我仍然有一个主要问题,这个表是登录到Django登录,而不是我在
models.py | forms.py


无论如何,感谢在这篇文章中对我的任何帮助,也会感谢任何给我任何指导的人

无法使用USERNAME\u字段为密码字段设置选项。但是,需要记住的一点是,Django模型字段的名称不必与底层db表中的名称匹配;您可以使用字段定义上的选项:

password = models.CharField(max_length=40, null=False, db_column='senha')

另一个问题是,您当然应该使用AbstractBaseUser,而不是AbstractUser;后者添加了大量您不想要或不拥有的字段。

无法使用USERNAME\u字段为密码字段设置选项。但是,需要记住的一点是,Django模型字段的名称不必与底层db表中的名称匹配;您可以使用字段定义上的选项:

password = models.CharField(max_length=40, null=False, db_column='senha')

另一个问题是,您当然应该使用AbstractBaseUser,而不是AbstractUser;后者添加了大量您不想要或不拥有的字段。

您是否运行了
/manage.py makemigrations
/manage.py migrate
?@ruddra OP特别不允许Django管理这些模型。但是@Nicolas您希望将密码存储在哪里?您在该模型上没有密码字段。@ruddra是的,没有更多的迁移,我不知道这里缺少什么。@DanielRoseman密码字段是“senha”,但是我是如何指定django的?您是否运行了
/manage.py makemigrations
/manage.py migrate
?@ruddra OP特别不允许django管理这些模型。但是@Nicolas您希望将密码存储在哪里?您在该模型上没有密码字段。@ruddra是的,没有更多的迁移,我不知道这里缺少什么。@DanielRoseman密码字段是“senha”,但我如何指定django?谢谢Daniel的帮助。我将对此进行测试,但当我尝试使用AbstractBaseUser时,我会犯一些错误,或者我做了一些不正确的事情,这就是为什么我要使用它。你能给我举一些基本的例子吗?或者更多关于AbstractBaseUser的帮助?!我尝试了一些资源,但有点迷茫。好吧,我想我解决了这个问题,但现在我在使用模型时遇到了麻烦,就像从任何字段获取数据一样,现在当我尝试使用Pessoa.object等时,它显示出超过了最大递归深度。我想这是相同的问题,因为我去掉了使用模型获取数据的行。但是我不知道问题是AbstractBaseModel,还是别的什么。谢谢Daniel的帮助。我将对此进行测试,但当我尝试使用AbstractBaseUser时,我会犯一些错误,或者我做了一些不正确的事情,这就是为什么我要使用它。你能给我举一些基本的例子吗?或者更多关于AbstractBaseUser的帮助?!我尝试了一些资源,但有点迷茫。好吧,我想我解决了这个问题,但现在我在使用模型时遇到了麻烦,就像从任何字段获取数据一样,现在当我尝试使用Pessoa.object等时,它显示出超过了最大递归深度。我想这是相同的问题,因为我去掉了使用模型获取数据的行。但我不知道问题出在AbstractBaseModel,还是别的什么