2011-04-04 20 views
18

Estoy intentando aprender python/django.¿Cómo separe mis modelos en django?

En este momento, tengo todos mis modelos en models.py

¿Es posible que mis modelos estallado para que pueda tener un solo archivo por cada modelo en una carpeta modelos separados para que pueda hacer algo así como:

~/miproyecto/miaplicacion/modelos/user.py ~/miproyecto/myapp/modelos/group.py

Gracias

Respuesta

30

Es posible, solo asegúrese de importar todos los modelos que cree en __init__.py en su directorio models. En su caso, se vería así:

# __init__.py 
from user import UserModel 
from group import GroupModel 

Esto debe hacerse porque Django en app.models para los modelos de una aplicación.

Como han mencionado otros, para las versiones de Django antes de 1.7, también debe especificar el nombre de su aplicación en el atributo app_label en la clase Meta en su modelo:

class UserModel(models.model): 
    # fields here 

    class Meta: 
     app_label = "myapp" 

http://docs.djangoproject.com/en/1.7/ref/models/options/#app-label

+1

Esto me volvió loco, así que para aquellos que vienen después, en 1.10 tiene que haber un '.': 'De .user import UserModel'. Como se menciona aquí: https://docs.djangoproject.com/en/1.10/topics/db/models/#organizing-models-in-a-package –

3

usted podría tener una carpeta llamada "modelos", pero luego en cada clase del modelo que tendrá que incluir:

class Meta: 
    app_label="appname goes here" 

* ps. No olvide un archivo __ init__.py como siempre hago. *

+0

¿No podemos usar algo de herencia? definir algunos base_model.py con la clase Meta y luego esto debería hacer para todas las derivadas de esa clase? –

Cuestiones relacionadas