Na interface de administração do Django, há uma maneira de duplicar um item?

votos
49

Basta saber se existe uma maneira fácil de adicionar a funcionalidade para duplicar uma lista existente na interface de administração?

Na entrada de dados que temos correr em uma situação onde um monte de itens de compartilhar dados genéricos com outro item, e para poupar tempo que seria muito bom para duplicar rapidamente uma lista existente e só alterar os dados alterados. Usando uma estrutura melhor modelo seria uma forma de reduzir a duplicação dos dados, mas pode haver situações em que os dados duplicados precisa ser mudado em uma base individual no futuro.

Publicado 08/10/2008 em 00:23
fonte usuário
Em outras línguas...                            


2 respostas

votos
84

Você pode salvar como por apenas permitindo adicionar esta a sua ModelAdmin:

save_as = True

Isso substitui o "Salvar e adicionar outro" botão com um "Salvar como" botão. "Salvar como" significa que o objeto será guardado como um novo objeto (com um novo ID), em vez do objeto de idade.

Respondeu 08/10/2008 em 00:26
fonte usuário

votos
0

Há uma solução melhor (mas não built-in) aqui:

https://github.com/RealGeeks/django-modelclone

De sua README:

Django Admin tem um save_asrecurso que adiciona um novo botão para sua página Alterar para salvar uma nova instância do objeto.

Eu não gosto da maneira como esse recurso funciona, porque você vai economizar uma cópia idêntica do objeto original (se você não obter erros de validação), logo que você clicar nesse link, e se você esquecer de fazer as pequenas mudanças que você queria no novo objeto que você vai acabar com uma duplicata do objeto existente.

Por outro lado, o Django-modelclone oferece uma visão intermediária, que, basicamente, pré-preenche o formulário para você. Então, você pode modificar e salve uma nova instância. Ou simplesmente ir embora sem efeitos colaterais.

Respondeu 10/04/2018 em 11:10
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more