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会将通配符替换为匹配文件名列表.
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)
(这种方法也适用于仅对某些应用程序执行单元测试,如果需要则忽略其他应用程序)
这个主题显示在谷歌搜索"从所有灯具加载数据"的第一批结果中,并没有提到IMO是什么正确的解决方案,即允许你加载任何你想要的灯具的解决方案,没有任何通配符技巧也没有settings.py文件的单个修改(我也习惯这样做)
只需使你的应用程序的fixtures目录平坦(而不是通常的Django方案,例如app_name/templates/app_name/mytemplate.html),即app_name/fixtures/myfixture.[json,yaml,xml]
以下是django doc所说的内容:
例如:
Run Code Online (Sandbox Code Playgroud)django-admin loaddata foo/bar/mydata.json将为每个已安装的应用程序搜索/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)
我的命令是这样的,很简单。(Django 1.6)
python manage.py loaddata a.json b.json c.json
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8273 次 |
| 最近记录: |