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.

Foi útil?

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

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top