1
resposta

Como utilizar o User models

Amigos,no cadastro informamos o nome, email e senha e salvamos essas informações por meio do User models. Caso quisesse informar mais informaçoes no cadastro (como por exemplo CPF, endereço etc) eu poderia adicionar mais campos no auth user? Pensei no app usuarios criar um model (com o nome Dados por exemplo) que como campo tivesse CPF, endereço etc, e atrelar ao User models por meio de uma Foreign Key, isto funciona?

1 resposta

Olá Carlos, como você está?

Peço desculpas pela demora em obter um retorno.

É possível adicionar campos extras ao modelo padrão de usuário do Django. Para isso, você pode criar um novo modelo que contenha as informações adicionais que deseja armazenar, como CPF, endereço, etc. e, em seguida, criar uma relação de chave estrangeira com o modelo de usuário do Django, que por padrão ocorre através da cláusula AUTH_USER_MODEL que permite adicionar funcionalidades extras ao modelo de usuário (django.contrib.auth.models.User), como mostro abaixo:

class UsuariosComCamposAdicionais(models.Model):
    cpf = models.CharField(max_length=11)
    endereco = models.CharField(max_length=255)
    user = models.ForeignKey(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)

Resultado no terminal

In [4]: from receitas.models import UsuariosComCamposAdicionais

In [5]: from django.contrib.auth.models import User

In [6]: user = User.objects.create(username='maria', email='maria@example.com', password='password')

In [7]: user_profile = UsuariosComCamposAdicionais.objects.create(cpf='12345678901', endereco='Rua Teste, 123', user=user)

In [8]: print(user_profile.cpf)
12345678901

In [9]: print(user_profile.endereco)
Rua Teste, 123

In [10]: print(user_profile.user.username)
maria

No exemplo acima, através da chave estrangeira criada, conseguimos adicionar mais campos ao modelo de usuário através da classe intermediária UsuariosComCamposAdicionais .

Todavia, vale ressaltar que outra forma de customizar o modelo é estender algumas classes bases do Django, como a AbstractBaseUser ou AbstractUser, e definir os campos personalizados desejados. A título de curiosidade, caso queira entender mais sobre usuários customizados (CustomizeUser) e criação de tabelas próprias de autenticação, recomendo a leitura dos artigos abaixo:

Espero ter ajudado. Continue mergulhando em conhecimento e não hesite em voltar ao fórum para continuar aprendendo e interagindo com a comunidade.

Abraços e bons estudos!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!