一些额外的管理工具来处理设备。
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函数。
请记住,在排序操作之前,模型对象已经序列化为
字典对象。
:目标:https://travis ci.org/davedash/django fixture magic
==
==
要求
==
安装以下组件:
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函数。
请记住,在排序操作之前,模型对象已经序列化为
字典对象。