2012-07-31 42 views
8

我使用get_model和get_models在Django有一个问题Django的get_models配车型/ __ init.py__

我有以下型号的几种模式/

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

而一个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 * 

但是在我的views.py中有一些使用的代码get_model

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

当我尝试get_models('myapp')它返回一个空列表。

我也试过

print(get_app('myapp')) 

将返回:

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

如果我尝试遍历它

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

它什么都不做。有什么我失踪或未能发现?

回答

11

由于您尚未在应用程序的models.py中定义模型,因此必须为每个模型明确设置app_label选项。

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

    class Meta: 
     app_label = 'myapp' 
+0

非常好,非常感谢。事实证明,这是Myapp和myapp之间的一个案例。 – Shane 2012-07-31 13:33:11