Pergunta

Então, no meu projeto Django, tenho alguns aplicativos diferentes, cada um com seus próprios modelos, visualizações, modelos, etc. Qual é uma boa maneira (o caminho "Django") para que esses aplicativos se comuniquem?

Um exemplo específico seria um aplicativo de reuniões que possui um modelo para reuniões, e eu tenho um aplicativo doméstico no qual quero exibir as 5 principais reuniões na página inicial.

A visão do aplicativo domiciliar deve apenas consultar o modelo do aplicativo de reuniões?

Parece que isso está cruzando alguma linha e pode haver uma maneira mais desarrumada de fazer coisas assim em Django.

Foi útil?

Solução

Em algum momento seus aplicativos vai tem que se casar para realizar qualquer trabalho. Você não consegue contornar isso.

Outras dicas

Para alcançar a dissociação o máximo possível,

Você precisa ter um aplicativo específico do projeto, que faz tudo o que se conecta entre si.

O uso de sinais dos modelos para criar novos modelos em aplicativos desacoplados ajuda. Mas fazer muito disso é tolice.

A visão do aplicativo domiciliar deve apenas consultar o modelo do aplicativo de reuniões?

Sim, é assim que é feito. Se você realmente quer dissociar as coisas, você pode fazer o seu Home O aplicativo usa chaves estrangeiras genéricas e algum tipo de sistema de modelo genérico, mas não há realmente um bom motivo para, a menos que você tenha grandes planos para o seu aplicativo doméstico ser conectável e trabalhar com um monte de outros aplicativos diferentes do Django.

Escrever aplicativos django bem acoplados é realmente fácil, e escrever aplicativos Django desacoplados é realmente difícil. Não se depare, a menos que você tenha um motivo, e você economizará muito trabalho (e felicidade!).

Se fosse eu, eu faria uma tag de modelo no seu aplicativo de reunião que produz a saída desejada e incluiria essa tag de modelo no modelo do aplicativo doméstico.

Dessa forma, você está apenas acoplando -os na parte de visualização do MVC e facilita a manutenção se você alterar seus modelos no aplicativo de reunião.

Para o seu exemplo específico, eu usaria um django TemplateTag.

Ter um templatetag "display_top_meetings" em seu aplicativo de reuniões e chamando -o com {{ display_top_meetings 5 }} No seu modelo de índice, carregando -o primeiro.

Você pode ler mais sobre templatetags aqui:

Documentação oficial do Django sobre TemplateTags

Artigo da B-List sobre Writting 'Better Model Tags'

Espero que isso ajude!

sim. Eu acho que isso é um recurso de design. Todos os modelos compartilham um back -end, então você precisaria fazer um trabalho extra para ter dois modelos com o mesmo nome em aplicativos diferentes.

Os projetos não devem compartilhar modelos

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