Extendendo User do Django
Opa!!!
Bom, resolvi criar o artigo ou post (sei lá) pois tenho acompanhado na lista diversas dúvidas à este respeito.
O cabra quer criar usuários utilizando o User que o próprio Django oferece, mas com alguns campos que são pertinentes a aplicação dele.
Na própria documentação do Django, tem uma explicação bacana de como se fazer:
http://docs.djangobrasil.org/topics/auth.html#armazenando-informa-es-adicionais-sobre-usu-rios
Outro artigo muito bom (inglês) é este aqui.
http://scottbarnham.com/blog/2008/08/21/extending-the-django-user-model-with-inheritance
Eu implementei utilizando o artigo acima, só que ele apresenta um “problema”. Não sei se realmente é um bug do Django ou o que pode ser.
O fato é que mesmo ao se extender o Users do Django, quando você cria o novo usuário, a senha não é encriptada.
Perguntei na lista e fui aconselhado a sobrescrever o método save do User.
Não achei que fosse a melhor solução, mas no fim das contas, foi o que tive que fazer.
Como eu só utilizava a rotina de adição de usuários através do admin, ficou muito fácil de sobrescrever o método.
Eu criei uma classe padrão para o Admin dos meus usuários e todas as outras classes referentes extendiam dela 😉
Ficou assim:
class defaultAdminModel(admin.ModelAdmin): def save_model(self, request, obj, form, change): obj.set_password(obj.password) obj.save()
As outras classes ficaram assim:
class AdminLocaisAtendimento(defaultAdminModel):
Enfim, é isto 😛
Abraços!
Deixe um comentário