我试图用脚本填充我的 Django 数据库,这样我就不必手动输入数据。到目前为止,我有以下内容:
from my_app.models import ModelInApp
import django
django.setup()
def add_data(data1, data2):
d, created = ModelInApp.objects.get_or_create(data1=data1, data2=data2)
print("- Data: {0}, Created: {1}".format(str(d), str(created)))
return d
def populate():
# data is a list of lists
for row in data:
data1 = row[0]
data2 = row[1]
add_data(data1, data2)
if __name__ == "__main__":
populate()
data 变量是一个列表列表,其中包含我要放入数据库中的数据。问题是,当我运行脚本时,出现 django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.
错误。我使用 PostgreSQL 作为数据库。
我究竟做错了什么?
原文由 Evan Bloemer 发布,翻译遵循 CC BY-SA 4.0 许可协议
解决这个问题的快速方法是从 Django shell (
python manage.py shell
) 填充你的数据库。您的代码没有import django
和django.setup()
应该可以正常工作。又快又脏 ;)如果你需要不时添加数据,可以考虑写一个 管理命令。这将允许您调用
python manage.py my_command_name datafile.dat
。您可以在命令中实现任何逻辑(来自文件或 API 的数据,创建或更新)。另一种添加数据的方法是使用数据迁移: https ://simpleisbetterthancomplex.com/tutorial/2017/09/26/how-to-create-django-data-migrations.html
另外,考虑使用
bulk_create
来提高效率(之前过滤数据列表以避免重复)