一次加载多个灯具

sil*_*zzo 16 django django-fixtures

无论如何加载一个夹具并装载多个夹具?

我最好输入:

python manage.py loaddata all_fixtures
Run Code Online (Sandbox Code Playgroud)

并且必须加载所有数据而不必键入所有内容.这可能吗?

spe*_*man 29

使用$ python manage.py loaddata myfixtures/*.json将起作用,因为Bash会将通配符替换为匹配文件名列表.

  • 在Mac OS XI上得到:"UserWarning:找不到名为'*'的夹具." (7认同)
  • 这是工作。```$ python manage.py loaddata 文件夹名称/*.json``` (2认同)

mim*_*lea 13

我在项目目录中有多个应用程序,每个应用程序都有"fixtures"目录.所以使用一些bash,我可以这样做:

python3 manage.py loaddata */fixtures/*.json

这会扩展我项目中每个应用程序上fixtures目录中的所有json文件.您只需执行以下操作即可测试:

ls */fixtures/*.json


Ste*_*lim 10

为什么不创建一个可以拉入所有灯具的Makefile?例如:

load_all_fixtures: 
    ./manage.py loaddata path/to/fixtures/foo.json
    ./manage.py loaddata path/to/fixtures/bar.json
    ./manage.py loaddata path/to/fixtures/baz.json
Run Code Online (Sandbox Code Playgroud)

然后在shell提示符下运行

make load_all_fixtures
Run Code Online (Sandbox Code Playgroud)

(这种方法也适用于仅对某些应用程序执行单元测试,如果需要则忽略其他应用程序)


the*_*way 9

这个主题显示在谷歌搜索"从所有灯具加载数据"的第一批结果中,并没有提到IMO是什么正确的解决方案,即允许你加载任何你想要的灯具的解决方案,没有任何通配符技巧也没有settings.py文件的单个修改(我也习惯这样做)

只需使你的应用程序的fixtures目录平坦(而不是通常的Django方案,例如app_name/templates/app_name/mytemplate.html),即app_name/fixtures/myfixture.[json,yaml,xml]

以下是django doc所说的内容:

例如:

django-admin loaddata foo/bar/mydata.json
Run Code Online (Sandbox Code Playgroud)

将为每个已安装的应用程序搜索/fixtures/foo/bar/mydata.json,为fIXTURE_DIRS中的每个目录搜索/foo/bar/mydata.json,以及文字路径foo/bar/mydata.json.

这意味着如果你的所有app目录中都有fixtures/myfixture.json,你只需运行即可

./manage.py loaddata myfixture
Run Code Online (Sandbox Code Playgroud)

加载项目中位于那里的所有灯具......就是这样!您甚至可以使用--app或--exclude参数限制加载灯具的应用.

我会提到我只使用我的灯具来填充我的数据库,同时进行一些开发,所以我不介意在我的'灯具'目录中有一个扁平结构...但即使你使用你的灯具进行测试,它似乎有平面结构是Django式的方式,正如 答案所暗示的那样,你可以通过写下类似的东西来引用特定应用中的灯具:

class MyTestCase(TestCase):
    fixtures = ['app_name/fixtures/myfixture.json']
Run Code Online (Sandbox Code Playgroud)


NHK*_*NHK 5

我的命令是这样的,很简单。(Django 1.6)

python manage.py loaddata a.json b.json c.json
Run Code Online (Sandbox Code Playgroud)