A pergunta é simples: Pra que eu um dia iria precisar esconder alguns registros do change list, se já estou no admin como superuser?
Bom, imagine que seu cliente quer o acesso ao admin para gerenciar os conteúdos e também acesso a alguma seção do projeto que o login é necessário.
Quão surpreso você ficaria se descobrisse, que aquele seu cadastro de teste onde vc conseguia entrar para ajudar, testar e acompanhar o andamento do projeto fosse removido?
Isso, apesar de ridículo, não é de todo o impossível, e foi por passar por algo semelhante que escrevo este post.
Para ocultar os registros de uma determinada classe, basta sobrescrever o método get_queryset do admin daquela classe no admin.py:
class CadastroAdmin(admin.ModelAdmin): form = CadastroForm search_fields = ('nome',) list_display = ('nome', 'email', 'unidade','ativo',) list_filter = ['ativo','unidade'] list_editable = ['ativo',] exclude = ('user',) save_on_top = True def get_queryset(self, request): qs = super(CadastroAdmin, self).get_queryset(request) if request.user.is_superuser: return qs return qs.exclude(id__in=[13,14,15]) admin.site.register(Cadastro, CadastroAdmin)
No exemplo acima, quando o usuário logado for superuser do admin, este verá todos os registros, do contrário, a queryset excluirá dos resultados os cadastros com ids 13, 14 e 15.
Com pequenos ajustes, este método tornar bastante útil para evitar dedos inquietos clicando onde não devem.
hasta!
Nenhum comentário:
Postar um comentário