2012-07-31 17 views
8

Estoy teniendo un problema con get_model y get_models en Djangoget_models Django con modelos/__ init.py__

Tengo varios modelos bajo modelos/

models/blog.py 
models/tags.py 
models/users.py 
models/comments.py 
models/category.py 

Y un models/__init.py__

from myapp.models.blog import * 
from myapp.models.tags import * 
from myapp.models.users import * 
from myapp.models.comments import * 
from myapp.models.category import * 

Sin embargo, en mi views.py tengo un código para usar get_model

from django.db.models.loading import get_model 
blog_class = get_model('myapp', 'blog') #Returns none 

Cuando intento get_models('myapp') devuelve una lista vacía.

También probé

print(get_app('myapp')) 

que devuelve:

<module 'myapp.models' from '/var/www/myapp/models/__init__.pyc'> 

Y si trato de iterar sobre ella

for model in get_models(get_app('myapp')): 
    print(model) 

No hace nada. ¿Hay algo que me falta o que no veo?

Respuesta

11

Como no ha definido sus modelos en la aplicación models.py, debe establecer explícitamente la opción app_label para cada modelo.

class Blog(models.Model): 
    title = models.CharField(max_length=30) 
    ... 

    class Meta: 
     app_label = 'myapp' 
+0

Excelente, muchas gracias. Resultó ser un problema de caso entre Myapp y myapp. – Shane