Remover a funcionalidade “Adicionar” no Django administrador [duplicado]
Pergunta
Esta questão já tem uma resposta aqui:
Existe uma maneira de remover a funcionalidade "Adicionar" no site de administração do Django? Para algumas entidades, eu só quero o Django admin para ser capaz de visualizá-los ou alterar as já existentes, mas não adicionar novos.
Solução
Claro, você pode personalizar administrador muito granular, seguindo as instruções aqui - Eu acredito que o que você quer pode ser obtido em parte, substituindo ModelAdmin.save_model(self, request, obj, form, change)
em sua própria subclasse ModelAdmin
, para assegurar que nada acontece na loja quando change
é falsa (ou seja, uma tentativa de adicionar em vez de mudança), e em parte substituindo ModelAdmin.add_view(self, request, form_url='', extra_context=None)
para apresentar uma "visão add" que deixa muito claro para o administrador que não vai ser permitido adicionar objeto através desta rota. Eu realmente não tenho feito a personalização específica de administração que você precisa, mas eu fiz os outros e eles parecem funcionar muito bem!
Outras dicas
Veja: Django Admin - Desativar o 'Add 'ação por um modelo específico para a verdadeira solução.
Você pode personalizar a permissão para cada grupo de usuários de dentro da interface admin:. Tente ir para /admin/auth/group
e deve ser simples de lá
Esta não será tão granular como a solução oferecida pela resposta anterior, mas ele vai cuidar da maioria das suas necessidades sem a necessidade de personalizar o administrador.
Se você alterar as permissões para restringir o acesso, então você ainda vai receber o sinal de mais por um campo FK / MtM. Clicando que irá abrir uma janela pop-up com 'Permissão negada' nele.
Você pode realmente remover completamente o sinal de mais, não simplesmente não registrar o modelo com o administrador.
Eu tenho uma situação onde eu tenho categorias predefinidas que eu quero que os usuários possam selecionar mais de um. A melhor maneira de fazer isso é com um campo models.ManyToMany. Você pode registrar o modelo com o administrador, digite os dados conforme necessário e, em seguida, remover o registro.
Uma maneira fácil eficaz é max_num=0
conjunto para essa linha particular.
sugestão da criação MAX_NUM = 0 funciona perfeitamente de Satya.
De acordo com os docs Django sobre a classe ModelForm:
Para os usuários com navegadores JavaScript habilitado, um "Adicionar outro" link é fornecido para permitir que qualquer número de inlines adicionais para ser adicionado além dos previstos como resultado do argumento extra.
O vínculo dinâmico não vai aparecer se o número de formulários exibidos atualmente excede MAX_NUM, ou se o usuário não tem JavaScript habilitado.
e
Tal como acontece com formsets regulares, você pode usar o MAX_NUM e parâmetros extras para modelformset_factory para limitar o número de formas extras exibido.
MAX_NUM não impede que objetos existentes sejam exibidos