Como você faz uma Django app pluggable?
-
03-07-2019 - |
Pergunta
Say por exemplo, eu tenho um aplicativo Blog que eu quero ser capaz de cair em diferentes projetos, mas eu sempre quero o Blog para ser associado com algum outro modelo. Por exemplo, em um caso que pode querer que ele seja associado a um usuário:
site.com/someuser/blog
Mas em outro site que eu quero que ele seja associado com, digamos, uma escola:
site.com/someschool/blog
Existe uma maneira de fazer o aplicativo Blog tão pluggable que não é necessário redefinir o modelo (adicionando um campo de chave estrangeira) sempre que eu soltá-lo em um projeto?
Solução
Você pode querer olhar para o quadro ContentTypes, eu usei-o para criar um comentário aplicativo que pode ser utilizado para comentar qualquer modelo no banco de dados (por razões diferentes, eu não queria usar o comentário django aplicativo padrão) .
http://docs.djangoproject.com/en/dev/ ref / contrib / contenttypes /
Outras dicas
Há vários detalhes importantes para certificar-se de um aplicativo pode ser reutilizável e eu acho que é melhor para ligação a dois dos conjuntos mais importantes da documentação sobre o tema:
relacionamentos genéricos permitem que você tenha uma chave estrangeira para qualquer outro modelo. No entanto, não é claro da sua pergunta que tipo de objeto que você deseja uma chave estrangeira para link para. Eu suspeito que o relacionamento de chave estrangeira não é realmente genérico - você apenas não ter visto outra parte do seu sistema que também poderia ser um aplicativo reutilizável
.