我正在为我的django项目数据库创建一个初始化文件。我正在使用我创建的名为initial_data.json
的文件执行此操作。例如,以下代码(运行syncdb
时)在模型Word
中创建一个新行name="apple"
:
[ { "model": "sites.word", "pk": 1, "fields": { "name": "apple" } } ]
到目前为止,我已经为几个模型设法了,问题在于具有多对多字段的模型。我已经四处寻找正确的方法来做到这一点并且空洞。
因此,例如,如果Model
情绪有很多Interests
,我将如何在Json文件中写入情绪-1的兴趣是兴趣-1,兴趣-2和兴趣-3。 / p>
在Json中编写多对多关系模型的正确方法是什么?
编辑:
@pastylegs解决方案是正确的,我只是遇到麻烦,因为我的兴趣编号在Json文件中已经关闭,因此无法与那些情绪相匹配。
答案 0 :(得分:14)
我很确定你的模型的多个字段可以写成一个简单的列表:
[
{
"model": "sites.word",
"pk": 1,
"fields": {
"name": "apple",
"my_m2m_field_name": [1,2,3],
}
}
]
其中1,2,3是关系的主键
答案 1 :(得分:5)
我喜欢做的是使用dumpdata command。我启动一个测试站点,使用管理表单或应用程序本身添加我想要在我的夹具中使用的数据,然后我运行
./manage.py dumpdata appname > appname/fixtures/initial_data.json
如果您省略appname,可以将所有应用程序一起转储,但我喜欢为每个模型单独执行此操作。
如果您使用的是1.3(我还没有),那么您可以使用--exclude
来转储某些部分。我已经看到有一个--indent
选项可以使输出很漂亮(现在只是在回答你的问题时发现)。
这是文档中很容易遗漏的内容之一。 ; - )