python manage.py syncdb不会在Python Django中自动加载initial_data.json fixture

时间:2014-12-18 13:47:29

标签: python django git fixtures django-syncdb

我在apps/hello处有应用程序的Python Django项目,以及/apps/hello/fixtures/initial_data.json处的初始数据夹具

当我从github git clone我的Python Django项目时,checkout需要分支并运行

./manage.py syncdb

它创建没有内容的空表i。即不会从我的initial_data装置加载数据。 Django要求我注册一个已经在fixture中注册的超级用户。

Operations to perform:
  Apply all migrations: admin, contenttypes, hello, auth, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying hello.0001_initial... OK
  Applying hello.0002_auto_20141217_1326... OK
  Applying hello.0003_auto_20141217_1329... OK
  Applying sessions.0001_initial... OK
You have installed Django's auth system, and don't have any superusers defined.
Would you like to create one now? (yes/no): no

但是我可以手动加载数据

./manage.py loaddata apps/hello/fixtures/initial_data.json

Installed 12 object(s) from 1 fixture(s)

如何让Django在syncdb上自动执行相同的操作?

2 个答案:

答案 0 :(得分:3)

如果您使用的是Django 1.7或更高版本,您可能应该知道automatic loading of fixtures has been deprecated

  

如果应用程序使用迁移,则不会自动加载灯具。由于Django 2.0中的应用程序将需要迁移,因此不推荐使用此行为。如果要加载应用程序的初始数据,请考虑在数据迁移中执行此操作。

如果您正在使用新的内置迁移,则无法自动加载灯具。

答案 1 :(得分:1)

我遇到了同样的问题,我通过在settings.py

中添加几行解决了这个问题
FIXTURE_DIRS = (
    os.path.join(BASE_DIR, 'hello/fixtures'),
)