Seria interessante, viável ou dentro dos padrões separar os modelos em arquivos .py para cada um e após isso, importá-los na models.py?
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Seria interessante, viável ou dentro dos padrões separar os modelos em arquivos .py para cada um e após isso, importá-los na models.py?
Oi Andrei, tudo bem com você?
É uma boa prática que façamos isso quando possuímos muitos modelos. A documentação recomenda que façamos a criação de uma pasta de modelos e dentro dela, cada arquivo.py de um modelo específico. Exemplo:
- models
- organic.py
- synthetic .py
- __init__.pyNo arquivo __init__.py de nosso pacote de modelos, iremos importar os arquivos.py de cada modelo que há na pasta:
from .organic import Person
from .synthetic import RobotCom isso podemos facilmente importar as classes do nosso pacote de modelo da seguinte forma:
from .models import *No curso Boas práticas no Django 2: apps, pastas e paginação, na aula 3 o professor cria uma estrutura de organização como essa para as views.
Porém, a importação explícita de cada modelo em vez de from .models import * tem vantagens de evitar carregamentos desnecessários, além de tornar o código mais legível.
E para casos onde queremos manter a legibilidade e evitar o import geral, podemos utilizar imports explícitos, como abaixo:
from myapp.models.organic import PersonE nesse caso, o __init__.py dentro da pasta de modelos poderá ser um arquivo vazio.
Vale ressaltar também que quando criamos um arquivo de modelos fora da pasta raiz, precisamos especificar a qual app aquele modelo pertence, e fazemos isso através do atributo app_label:
class Person(models.Model):
name = models.CharField(max_length=100)
class Meta:
app_label = 'myapp'Fico à disposição para qualquer dúvida. Abraços e bons estudos!