一些额外的管理工具来处理设备。

django-fixture-magic的Python项目详细描述


…图片::https://travis-ci.org/davedash/django-fixture-magic.png?branch=master
:目标:https://travis ci.org/davedash/django fixture magic




==
==
要求
==

*django 1.8-2.1



安装以下组件:

pip install future

fixture magic向"manage.py"添加两个命令,因此您应该将其添加到"settings.py"中的"installed廑apps"

代码块::python

installed廑apps=(

"fixture廑u magic"、



usage
----

有四个命令。`` dump_object``返回特定对象的json表示及其所有依赖项(由foreignkeys定义):

./manage.py dump_object app.model pk1 pk2 pk3…>;my戋u new戋fixture.json
或:

::

./manage.py dump戋u object app.model--查询"{"pk戋u in":[pk1,pk2,pk3]}">;my戋u new戋fixture.json

或通过传递星号获得具有所有依赖项的所有对象::

./manage.py dump戋object app.model'*'>;my_new_fixture.json

您现在可以在没有外键i
错误的测试中安全地加载"my_new_fixture.json"。

如果您的目标数据库已部分设置,则此
非常有用。下面是dump_object的默认输出示例:

./manage.py dump_object app.book

…代码块::json

[
{
"model":"app.author",
"fields":{
"pk":5,
"name":"mark twain",
}
},
{
"model":"app.book",
"fields":{
"pk":2,
"title":"tom sawyer",
"author":5
}
}
]


代码块:json

[
{
"model":"app.book",
"fields":{
"pk":2,
"title":"tom sawyer",
"author":5
}
}
]



:注意:上面的示例假设目标数据库中存在ID为5的author。

此命令接受几个fixture
文件,执行一个简单的重复数据消除操作(基于模型和pk),并返回一个
干净的json文件。如果您有多个json fixtures,这些fixtures可能有多余的数据:

./manage.py merge_fixtures fixture1.json fixture2.json fixture3.json…\
>;all_my_fixtures.json

第三个命令是"reorder_fixtures"。此命令接受一个文件
和几个模型名(格式为
fixture文件中指定的"app.model")。这将重新排序设备,使您首先指定的模型首先显示在设备中。如果您在加载模型时倾向于获取外键
错误,这将非常有用:

./manage.py reorder_fixtures fixture.json app1.model1 app2.model2…\
>;ordered_fixture.json


未指定的模型将追加到末尾。


第四个命令是"custom_dump"。这将读取设置"自定义转储":

…代码块::python

\fixture magic
custom\u dumps={
"addon":{'当前'u版本.files.all.0',
],
'顺序':('app1.model1','app2.model2',),
'顺序条件':{'app1.model1':lambda x:1 if x.get('fields').get('parent\u model1')否则为0,
'app2.model2':lambda x:-1*x.get('pk')},
}
}

然后将json转储合并在一起。非常方便
用于转储多个依赖对象。` dependents`、`order`和`order-cond`是
可选的。

``dependents`:定义其他属性/方法来转储的返回值
。magic将"current_version.files.all.0"`
转换为"object.current_version.files.all()[0]`

``order``:根据对象的
模型类指定转储对象的顺序。在上面的示例中,所有app1.model1对象将位于任何
app2.model2对象之前,该对象将位于任何其他模型类的任何对象之前。

``order\u cond``:指定转储一个或多个特定模型
类的对象的顺序。在上面的示例中,具有truthy
`self.parent\u model1`属性的所有app1.model1对象都将位于任何其他app1.model1对象之后,该对象的
对此属性没有truthy值。对该模型类型的所有对象的列表调用排序操作,将与
模型名关联的值作为关键字参数传递给sort函数。
请记住,在排序操作之前,模型对象已经序列化为
字典对象。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java是导入com的工具。太阳无法在Eclipse中解析javadoc   gui中的java工具提示未显示?   java链接动态。html表单到。jsp   java读取电影mp3的信息   java访问web服务https到http   java如何在启动计算机时从网站自动下载jasper报告   对于使用Rails和Java后端的项目,在哪里构造ElasticSearch查询,前端还是后端?   java指定的大小超过了最大可表示大小   java如何在工具栏和菜单中获取对eclipse操作的引用,并切换其启用/禁用状态?   java如何对酒店房间的arraylist进行排序   java JTTransforms:ifft奇数数据   在Java中重写toString()时出现字符串问题   java将logcat保存到文件   德语地区的java日期时间格式不一致   java在我的javafx应用程序中,我有一些带有文本字段和按钮的场景。当按钮为空时,我可以将其设置为禁用,当按钮为非空时,将其设置为启用吗?   java将Android源代码导入或打开Eclipse或Android studio的正确方法是什么