python - Django get_models 与模型/__init.py__

标签 python django

我在 django 中使用 get_model 和 get_models 时遇到问题

我在models下有几个模型/

 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)

它什么都不做。有什么我遗漏或没有发现的吗?

最佳答案

因为您还没有在应用程序的 models.py 中定义您的模型,所以您必须显式设置 app_label每个模型的选项。

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

    class Meta:
        app_label = 'myapp'

关于python - Django get_models 与模型/__init.py__,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11739011/

相关文章:

python - Django 请求 URL 被附加

python - Django模型层中GET和FILTER的区别

python - Django MySQL数据库设计

python - Django 将对象从一个数据库移动到另一个数据库

python - 在 python 中进行条件赋值的最佳方法

python - 从带有具有列表值的键的字典创建一个新的字典列表

python - django-orm : How can I insert element to a table of a particular database

python - 子进程.CalledProcessError : returned non-zero exit status 1 for non-pingable destination

python - Django collectstatic 命令在 AWS Elastic Beanstalk Amazon Linux 2 Python 3 平台中失败

python - 如何在 Django 之外访问 Django DB 和 ORM