需求背景
我需要在django项目中app应用下写一个工具方法,用来更新数据库。
报错信息
django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
有效代码
import os
import django
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'devops.settings') # devops换成自己的项目名称
django.setup()
from blog.models import Aticle # 这里导入你自己的应用模型
def update_single_content():
c_ids = Aticle.objects.values_list("article_id", flat=True)
c_ids = list(c_ids)
print(c_ids)
if __name__ == '__main__':
update_single_content()
这里需要关注的是前4行代码,顺序不要错
-
AppRegistryNotReady 从这个报错出发,解决办法应该是在加载应用models之前激活项目的设置,所以django.setup()一定要在update_single_content之前。
-
os.environ.setdefault 设置环境的运行环境,排除对pycharm的配置依赖,不用在pycharm中另加环境变量。