2012-07-31 14 views
8

Sto avendo un problema con get_model e get_models in Djangoget_models Django con modelli/__ init.py__

Ho diversi modelli sotto modelli/

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

E 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 * 

Tuttavia nel mio views.py ho del codice per utilizzare get_model

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

Quando provo get_models('myapp') restituisce una lista vuota.

Ho anche provato

print(get_app('myapp')) 

che restituisce:

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

E se provo a scorrere su di esso

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

Non fa nulla. C'è qualcosa che mi manca o che non riesco a individuare?

risposta

11

Poiché i modelli non sono stati definiti nell'app models.py, è necessario impostare esplicitamente l'opzione app_label per ciascun modello.

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

    class Meta: 
     app_label = 'myapp' 
+0

Eccellente, grazie mille. Si è rivelato un problema tra Myapp e myapp. – Shane