Я пытаюсь использовать свой класс Person в качестве пользователя в models.py.Однако я попытался использовать AbstractUser и AbstractBaseUser.Оба из них дают мне ошибки в той части, где я пытаюсь войти в систему, я пробовал несколько способов, пока не понял, что мне нужна помощь от кого-то с большим опытом и знаниями, чем я.
Мои модели.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
для создания моделей на основе базы данных, которую я использую ( тот же самый)это уже полно данных ).Любое изменение, , за исключением основных изменений , выходит за рамки мысли.
Ниже моего views.py
с def, который проверяет логин и перенаправляет на приборная панель .
def dash_login(request):
form = LoginForm(request.POST, None)
if request.method == 'POST':
#if form.is_valid():
username = form.data['cnpj']
password = form.data['senha']
user = authenticate(username=username)
print(username)
#p = Pessoa.objects.filter(cnpj=form.data['cnpj']).values('id_pessoa')[0]['id_pessoa']
#login(request, user)
print(request.user.is_authenticated)
#return render(request, 'dashboard.html')
return render(request, 'login.html', {'form': form})
Я использую print()
для проверки команд перед тем, как закончится, в тот момент, когда они поступают на линию:
user = authenticate(username=username)
Вызывает эту ошибку:
Файл "C: \ Users \ Pichau \ AppData \ Local \ Programs \ Python \ Python37 \ lib \ site-packages \ django \ db \ backends \ utils.py ", строка 85, в _execute возвращает self.cursor.execute (sql, params) django.db.utils.ProgrammingError: столбец pessoa.password не существует ЛИНИЯ 1: ВЫБРАТЬ" pessoa "." password "," pessoa ". "last_login", "pessoa" ....
** Независимо от того, что я поставил пароль внутри аутентификации, ошибка выдается.**
Это был второй вариант:
Где я попадаю в ту же ошибку, если я удаляю p
и использую return render (request, 'dashboard.html')
IЯ перенаправляю без идентификатора пользователя, из-за чего у меня возникают проблемы с получением его данных на приборной панели.
Однако у меня все еще есть основная проблема, эта таблица входит в систему для входа в Django, а не во вход в систему, который я создал внутри models.py | forms.py
В любом случае, спасибо за помощь в этом посте, буду благодарен всем, кто даст мне какое-либо указание.