FAQ: A administração

Não consigo logar. Quando eu insiro um usuário e senha válidos, ele apenas trás a página de login de novo, sem mensagens de erro.

O cookie de login não está configurado corretamente, porque o domínio do cookie enviado pelo Django não casa com o domínio no seu navegador. Verifique essas duas coisas:

  • Configure o SESSION_COOKIE_DOMAIN na configuração de seu admin para casar com seu domínio. Por exemplo, se você está acessando “http://www.mysite.com/admin/” no seu navegador, em “myproject.settings” você deverá definir o SESSION_COOKIE_DOMAIN = 'www.mysite.com'.
  • Alguns navegadores (Firefox?) não gostam de acessar cookies de domínios que não têm pontos. Se você está executando o site administrativo em “localhost” ou outro domínio que não tem um ponto, tente acessar “localhost.localdomain” ou “127.0.0.1” e igualmente configure o SESSION_COOKIE_DOMAIN.

Não consigo logar. Quando eu insiro um usuário e senha válidos, ele apenas trás a página de login de novo, com um erro “Por favor, informe um usuário e senha corretos”.

Se você está certo sobre seu usuário e senha, verifique se seu usuário tem o is_active e``is_staff`` definidos como True. O site administrativo somente libera o acesso a usuários com esses dois campos em True.

Como eu previno o middleware de cache de fazer cache do site administrativo?

Defina o valor de CACHE_MIDDLEWARE_ANONYMOUS_ONLY para True. Veja a documentação do cache para mais informações.

Como eu defino automaticamente o valor de um campo para o usuário que editou o objeto por último na administração?

A classe ModelAdmin fornece ganchos (hooks) de personalização que permitem que você transforme um objeto quando ele é salvo, usando detalhes obtidos da requisição. Ao extrair o usuário atual da requisição, e personalizar o gancho save_model(), você pode atualizar um objeto para refletir o usuário que o editou. Veja a documentação sobre os métodos do ModelAdmin para um exemplo.

Como eu restrinjo a edição de objetos na administração a apenas os usuários que os criaram?

A classe ModelAdmin também fornece ganchos de personalização que permitem que você controle a visibilidade e editabilidade dos objetos na administração. Usando o mesmo truque de extrair o usuário da requisição, ModelAdmin.queryset() e ModelAdmin.has_change_permission() podem ser usados para controlar a visibilidade e editabilidade de objetos na administração.

Minhas imagens e CSS do site administrativo funcionam no servidor de desenvolvimento, mas não aparecem ao executar no mod_python.

Veja servindo os arquivos da administração na documentação “Como usar o Django com o mod_python”.

Meu “list_filter” contém um ManyToManyField, mas o filtro não é exibido.

O Django não exibirá um filtro para um ManyToManyField a menos que existam mais de dois objetos relacionados.

Por exemplo, se o seu list_filter inclui sites, e se existe apenas um site no seu banco de dados, ele não exibirá um filtro de “Site”. Nesse caso, o filtro por site seria inútil.

Como eu posso personalizar a funcionalidade da interface administrativa?

Você tem algumas opções. Se você quer extender o formulário gerado automaticamente pelo Django, você pode incluir módulos JavaScript na página pelo parâmetro js da classe Admin do model. Esse parâmetro é uma lista de URLs, como strings, apontando para módulos JavaScript que serão incluídos dentro do formulário da administração via uma tag <script>.

Se você quer mais flexibilidade do que apenas ajustar os formulários auto-gerados sinta-se livre para escrever views personalizadas para a administração. A administração é feito em Django puro, e você pode escrever views personalizadas que se liguem ao sistema de autenticação, verifiquem permissões e façam o que for preciso.

Se você quer personalizar a aparência da interface administrativa, leia a próxima questão.

O site administrativo gerado automaticamente é horrível! Como eu posso mudá-lo?

Gostamos dele, mas se você não gosta, você pode mudar a apresentação do site editando a folha de estilos e/ou as imagens assossiadas. O site é construído usando HTML semântico e está cheio de hooks de CSS, assim, qualquer mudança que você quiser fazer é possível pela edição da folha de estilos. Nós escrevemos um guia para o CSS usado na administração para auxiliá-lo.