我想使用以下内容从Django 1.3 fixtures将数据转储到json,但结果是一个空列表。这里有什么问题吗?
python manage.py dumpdata <app-name> --format=json --indent 5 > C:\temp\tt.json
编辑:感兴趣的应用程序不是默认的数据库别名。能够成功地使用dumpdata
作为默认数据库别名,但不提及<app-name>
但不能提及其他数据库。
感谢。
答案 0 :(得分:4)
Django 1.2中的新增功能是所有manage.py命令的常见--database
选项。你可以使用'='或空格。所以试一试:
python manage.py dumpdata <app-name> --database <other_db> --format=json --indent 5 > C:\temp\tt.json
另外,我发现了一个更灵活的dumpdata解决方案。例如,如果您的模型上有自定义管理器,则dumpdata(doc)可能会让人感到困惑,尽管这与Django 1.3的--all
选项略有不同。对于两个,dumpdata没有订购它的输出,当我想要干净,闪亮的灯具数据时,这会让我烦恼。或者说您只想要转储/导出一些模型数据。相反,我使用Django Serialization。这允许我使用普通的Queryset(过滤,排序,排除等)选择我想要的任何数据 - 然后将其序列化为JSON(或XML)。例如:
python manage.py shell
>>> from django.core import serializers
>>> from <your project>.<app>.models import MyModel
>>> serializers.serialize('json', MyModel.objects.all().order_by('name'), use_natural_keys=True)
然后在文本编辑器中重新格式化并粘贴到fixture文件中。
答案 1 :(得分:1)
--indent=5
不是--indent 5
。不确定这是不是你的问题,但值得一试。
此外,FWIW,JSON是默认值,因此--format=json
是不必要的。
答案 2 :(得分:1)
首先,试试这个:
python manage.py dumpdata <app-name>
如果你在输出中看到相同的数据,第二个应该可以工作!
之后,试试这个:
python manage.py dumpdata <app-name> --indent 2 > C:\temp\tt.json
但是,请确保它在您的settings.INSTALLED_APPS中,并且它具有完全相同的名称!