适用于特定应用的Django 1.3灯具

时间:2011-09-14 15:44:53

标签: django

我想使用以下内容从Django 1.3 fixtures将数据转储到json,但结果是一个空列表。这里有什么问题吗?

python manage.py dumpdata <app-name> --format=json --indent 5 > C:\temp\tt.json

编辑:感兴趣的应用程序不是默认的数据库别名。能够成功地使用dumpdata作为默认数据库别名,但不提及<app-name>但不能提及其他数据库。

感谢。

3 个答案:

答案 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中,并且它具有完全相同的名称!