2012-07-31 13 views
8

Ich habe ein Problem mit get_model und get_models in djangoDjango get_models mit Modellen/__ init.py__

Ich habe mehrere Modelle unter models/

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

Und ein 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 * 

Allerdings habe ich in meinem views.py einen Code zu verwenden get_model

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

Wenn ich get_models('myapp') versuche, gibt es eine leere Liste zurück.

Ich habe auch versucht

print(get_app('myapp')) 

Welche zurück:

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

Und wenn ich versuche, darüber nichts

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

Es tut iterieren. Gibt es etwas, das ich vermisse oder nicht erkenne?

Antwort

11

Da Sie Ihre Modelle nicht in der App models.py definiert haben, müssen Sie die Option app_label für jedes Modell explizit festlegen.

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

    class Meta: 
     app_label = 'myapp' 
+0

Ausgezeichnet, vielen Dank. Es stellte sich heraus, dass es sich um ein Fallproblem zwischen Myapp und myapp handelte. – Shane