Django modelo de herança. Ocultando ou removendo campos
-
03-07-2019 - |
Pergunta
Eu quero herdar uma classe de modelo de algum 3 código partido. Eu não vou estar usando alguns dos campos, mas quero o meu cliente para ser capaz de editar o modelo de administração. É a melhor aposta para escondê-los de Admin ou eu posso realmente evitar que sejam criados em primeiro lugar?
Além disso - o que posso fazer se um dos campos não desejados é necessária? Meu primeiro pensamento é para substituir o método Save e basta colocar em um valor padrão.
Solução
Se você está herdando o modelo, então provavelmente não é sábio para tentar esconder ou desativar quaisquer campos existentes. A melhor coisa que você provavelmente poderia fazer é exatamente o que você sugeriu: save()
override e lidar com sua lógica de lá.
Outras dicas
Você pode controlar os campos que são editáveis ??na administração.
De docs Django:
"Se você quer um formulário para o modelo de Autor que inclui apenas o nome eo título campos, você deve especificar campos ou excluir assim:
class AuthorAdmin(admin.ModelAdmin):
fields = ('name', 'title')
class AuthorAdmin(admin.ModelAdmin):
exclude = ('birth_date',)"
http://docs.djangoproject.com/en/dev/ ref / contrib / admin /
Ao invés de herdar, considere o uso de formulários personalizados.
-
Você pode eliminar campos de exibição que ainda estão no modelo.
-
Você pode validar e fornecer valores padrão no método
clean()
do formulário.
http : //docs.djangoproject.com/en/dev/ref/contrib/admin/#adding-custom-validation-to-the-admin