Django – Separando Models por arquivo

Filed Under (Desenvolvimento) by Samir on 19-03-2010

Tagged Under :

Uma dúvida muito comum sobre o ORM do Django é se existe a possibilidade de quebrar os models em partes menores, ou seja, separar um grupo de classes específicas e coloca-lás em um módulo Python.

Essa técnica pode ser útil conforme sua necessidade, se você possui uma app com muitos models, por ser interessante separa-lás por arquivo. Eu tive esse problema recentemente, procurei na net e achei uma forma interessante de fazer isso e principalmente, não quebrar a compatibilidade com as ferramentas externas, como o syncdb ou o south que utilizo bastante.

Sem muita enrolação, imagine a seguinte estrutura para um projeto:

Transferências

Tendo a estrutura pronta, temos que editar os models de forma que o Django entenda nossa nova estrutura.
Por exemplo no arquivo financeiro.py da app2:

from django.db import models

class Financeiro(models.Model):
    class Meta:
        app_label = 'app2'

Observe que sou obrigado a informar explicitamente o nome da aplicação para cada model, sem isso o Django não consegue entender que essa classe pertence a aplicação app2.

E por último, no arquivos models.py de cada aplicação temos que importar as classes:

from app2.models_src.financeiro import Financeiro

Uma coisa muito importante que passei entender sobre o Django é que ele lhe dá muita flexibilidade para modificar sua estrutura e sobreescrever qualquer feature padrão, por tanto quanto melhor seu conhecimento em Python, melhores serão suas chances de extrair o máximo do framework.

Share and Enjoy:
  • Print
  • Digg
  • StumbleUpon
  • del.icio.us
  • Facebook
  • Yahoo! Buzz
  • Twitter
  • Google Bookmarks
  • Reddit

Comments:

Post a comment