Cerca de 20 modelos no aplicativo 1 django

votos
37

Eu comecei a trabalhar em um aplicativo local para mim mesmo que atravessa o browser. Tendo recentemente passaram pelo tutorial Django Eu estou pensando que talvez seja melhor usar o Django em vez de apenas python simples.

Há um problema: Eu tenho pelo menos 20 modelos e cada um terá muitas funções. Muito simplesmente vai criar um arquivo modelos enormes e, provavelmente, vistas enorme também. Como faço para separá-los?

Os modelos estão todos relacionados , então não posso simplesmente transformá-los em aplicativos separados posso?

Publicado 13/05/2009 em 18:06
fonte usuário
Em outras línguas...                            


6 respostas

votos
69

Esta é uma necessidade muito comum ... Eu não posso imaginar vadear através de um arquivo models.py que é 10.000 linhas longo :-)

Você pode dividir o models.pyarquivo (e views.py também) em um pacakge. Neste caso, sua árvore projeto será parecido com:

/my_proj
    /myapp
        /models
            __init__.py
            person.py

O __init__.pyarquivo faz com que a pasta em um pacote. A única pegadinha é ter a certeza de definir um interior Metade classe para seus modelos que indicam a app_label para o modelo, caso contrário Django terá problemas para construir o seu esquema:

class Person(models.Model):
    name = models.CharField(max_length=128)

    class Meta:
        app_label = 'myapp'

Uma vez feito isso, importar o modelo em seu __init__.pyarquivo para que Django e db sincronização irá encontrá-lo:

from person import Person

Desta forma, você ainda pode fazer from myapp.models import Person

Respondeu 13/05/2009 em 18:10
fonte usuário

votos
30

"Eu tenho pelo menos 20 modelos" - esta é provavelmente mais de um Django "app" e é mais como um "projeto" Django com vários "apps" pequenas

Gosto de dividir as coisas em torno de temas ou áreas que têm poucos (1 a 5) modelos. Isso se torna um "app" Django - e é a unidade útil de reutilização.

O "projecto" global é uma coleção de aplicativos que apresenta a coisa integrada construída de peças separadas.

Isso também ajuda para gerenciamento de projetos, já que cada "app" pode se tornar um sprint com um lançamento no th final.

Respondeu 13/05/2009 em 19:00
fonte usuário

votos
16

Os modelos estão todos relacionados então eu não posso é simplesmente transformá-los em aplicativos separados posso?

Você pode separá-los em aplicativos separados. Para usar um modelo em um aplicativo de outro aplicativo que você acabou de importá-lo da mesma forma que você iria importar aplicativos django.contrib.

Respondeu 13/05/2009 em 18:58
fonte usuário

votos
5

Ter 20 modelos em um app pode ser um sinal de que você deve dividi-lo em pequenos.

A finalidade de um aplicativo Django é ter um pequeno pedaço de finalidade única de código, que se encaixa nicelly juntos.

Então, se você tivesse um site de e-commerce, você pode ter um aplicativo shopping_cart, um aplicativo de faturamento, e assim por diante.

Tenha em mente que não há realmente nenhum problema em aplicativos, dependendo uns dos outros (embora seja sempre melhor se eles podem ser dissociados), mas você não deve ter um aplicativo fazendo duas coisas muito distintas.

O artigo dicas Django: Colocação para fora uma aplicação pode ajudá-lo. Como sempre, levar tudo o que lê com um grão de sal (incluindo esta resposta).

Respondeu 14/01/2010 em 03:47
fonte usuário

votos
0

Você pode dividi-los em arquivos separados e simplesmente ter as importações na parte superior do seu campo models.py principal.

Se você realmente quer para uma outra questão.

Respondeu 13/05/2009 em 18:10
fonte usuário

votos
0

Você pode quebrar os modelos ao longo de vários arquivos. Isso vale para vistas também.

Respondeu 13/05/2009 em 18:09
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more