Guilherme,
Sempre que eu precisar fazer algum relacionamento entre classes terá que criar um novo app como você fez entre Receita e Pessoa? Posso simplesmente colocar todas as Classes dentro do models.py?
Guilherme,
Sempre que eu precisar fazer algum relacionamento entre classes terá que criar um novo app como você fez entre Receita e Pessoa? Posso simplesmente colocar todas as Classes dentro do models.py?
Olá Francisco, tudo bem com você?
Peço desculpas pela demora no retorno.
Podemos criar sim múltiplas tabelas (classes) dentro do arquivo models.py presente em nossos apps, e criarmos relacionamentos entre elas, sem que estejam em um outro arquivo models.py ou que pertençam a outro app. Abaixo um exemplo de relacionamento entre tabelas presente no mesmo arquivo models.py.
from django.db import models
class Fabicante(models.Model):
pass
class Carro(models.Model):
fabricante = models.ForeignKey(Fabicante, on_delete=models.CASCADE)
Acima, as duas classes estão relacionadas aos carros, caso formos criar uma tabela para cadastro de funcionários não é recomendado mantermos no mesmo app e pasta models.py, por possuírem responsabilidades diferentes.
No exemplo apresentado na aula, fazer esse relacionamento não seria uma boa prática de programação, por boas práticas um app deve possuir uma única e exclusiva responsabilidade, assim se criarmos um modelo para a Pessoa, dentro do arquivo models.py do app Receitas, estariamos atribuindo uma segunda responsabilidade para o app Receitas, responsabilidade essa de manter e gerenciar as pessoas
.
Tomando como exemplo o app receitas, esse app tem como responsabilidade gerenciar o cadastro, exibição e manutenção das receitas. Note que temos bem definido o que esse app irá realizar. As receitas possuem os seguintes campos que compõem a tabela para cadastro, como por exemplo.
Note que os campos possuem um padrão que segue o objetivo do app, cadastro e gerenciamento de receitas.
O app pessoas, possui a responsabilidade de gerenciar o cadastro, exibição e manutenção das pessoas que fazem o cadastro das receitas. O app pessoas possui os seguintes campos que compõem a tabela para cadastro.
Esses campos estão estritamente relacionados a uma pessoa, mantendo uma coesão na responsabilidade do app.
Para aprimorar ainda mais o seu aprendizado sobre boas práticas no uso modelos do Django, recomendo a leitura do seguinte artigo, que apresenta 28 tópicos importantes sobre o uso dos modelos.
E para conhecer um pouco mais sobre os relacionamentos em Django você pode realizar a leitura da documentação, onde é apresentado com detalhes sobre as possibilidades de relacionamentos e como realizá-los.
O artigo e a documentação estão em inglês, caso tenha dificuldade com o idioma, recomendo o uso do tradutor do navegador.
Fico à disposição em caso de dúvidas.
Abraços e bons estudos.