Pergunta

Eu estou armazenando algumas informações do usuário por adicional, usando o AUTH_PROFILE_MODULE .

Podemos acessar o usuário em um modelo de Django usando {{ request.user }} mas como podemos acessar campos no perfil desde o perfil só é acessível através de um user.get_profile() função?

É realmente necessário para explicitamente passar o perfil para o modelo de cada vez?

Foi útil?

Solução

Use {{ request.user.get_profile.whatever }}. linguagem de templates do Django automaticamente chama as coisas que são resgatáveis ??-. Neste caso, o método .get_profile()

Outras dicas

Não tenho certeza por isso que é diferente para mim, mas eu preciso usar {{user}} em vez de {{request.user}}.

Sim, é possível perfil de acesso do modelo usando request.user.get_profile

No entanto, há uma pequena ressalva : nem todos os usuários terão perfis, que estava no meu caso com usuários administradores. Então, chamando diretamente {{ request.user.get_profile.whatever }} a partir do modelo causará um erro em tais casos.

Se você estiver certo de que todos os usuários sempre têm perfis é seguro para chamar de modelo, get_profile() outro modo de chamada de dentro try-exceto bloco na sua opinião e passá-lo para o modelo.

Se você estiver usando Django> 1,5 você não pode mais usar get_profile.

Se você tiver um aplicativo de legado, você deve remover AUTH_PROFILE_MODULE = 'myapp.profile' do seu settings.py.

Se você usar models.OneToOneField(User) em sua classe de perfil, você pode simplesmente usar

{{ request.user.profile.whatever }}

no seu modelo de Django

Se ajudar alguém, eu usei o seguinte no meu modelo:

Nome de usuário: {{ user.username }}

Usuário Nome completo: {{ user.get_full_name }}

User Group: {{ user.groups.all.0 }}

E-mail: {{ user.email }}

Session Iniciado em {{ user.last_login }}

Um resultado da amostra é assim:

Usuário: auditor Ezio

User Group: auditGroup

Nome de usuário: testUser03

E-mail: testuser03@auditor.com

sessão começou no- 16 de abril de 2018, 9:38 p.m.

Obrigado:)

Working!

Em seu modelo de perfil fornecem related_name

user = models.OneToOneField(AUTH_USER_MODEL, related_name="user_profile", on_delete=models.CASCADE)

Em seguida, no uso de modelo. Aqui company_name é campo na tabela perfil

{{ request.user.user_profile.company_name }}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top