Desde do Django 1.5, o framework possibilita a criação de um modelo de Usuário personalizado. Faço parte do time de pessoas que não concorda em adicionar campos não relacionados com a autenticação na classe de Usuário.
Para resolver esse problema, já que a partir da versão 1.7 do django este método não é mais recomendado, faremos algumas modificações nos arquivos.
Mudanças que tratrei aqui são fáceis de implementar e não irão gerar problemas com autenticação já existente e/ou migrações de banco.
Cenário: Imagine que temos uma app cadastros que possui uma classe Cadastro e esta tem um vínculo com a classe User do Django, para fazer uso do sistema de autenticação.
Remova a setting AUTH_PROFILE_MODULE:
Este passo é fácil. Encontre o AUTH_PROFILE_MODULE no seu arquivo settings.py e remova linha.
# No seu settings.py: AUTH_PROFILE_MODULE = 'cadastros.cadastro' # remova esta linha
Mude seu modelo que possui o vínculo com a classe User do Django:
Antes:
from django.db import models from django.contrib.auth.models import User class Cadastro(models.Model): """modelo que representa informações adicionais sobre o usuário""" user = models.ForeignKey(User, unique=True) # mude esta linha # ... outros campos aqui
Depois:
from django.db import models from django.contrib.auth.models import User class Cadastro(models.Model): """modelo que representa informações adicionais sobre o usuário""" user = models.OneToOneField(User) # nova linha # ... outros campos aqui
Aplique as migrações para concluir esta etapa:
python manage.py makemigrations cadastros python manage.py migrate cadastros
Atualize seu código:
Antes:
cadastro = request.user.get_profile()
Depois:
cadastro = request.user.cadastro
hasta!
Nenhum comentário:
Postar um comentário