我正试图用一个脚本填充我的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()

数据变量是包含要放入数据库的数据的列表列表。问题是,当我运行脚本时,我得到一个django.core.exceptions.AppRegistryNotReady: Apps aren't loaded yet.错误。我使用postgresql作为数据库。
我做错什么了?

最佳答案

解决这个问题的快速方法是从django shell(python manage.py shell)填充数据库。没有import djangodjango.setup()的代码应该可以正常工作。快&脏;)
添加数据的超级正确方法是使用数据迁移:https://simpleisbetterthancomplex.com/tutorial/2017/09/26/how-to-create-django-data-migrations.html
另外,考虑使用bulk_create来提高效率(在之前过滤数据列表以避免重复或重复)

10-07 12:37
查看更多