2011-09-14 54 views
0

我想從Django 1.3 Fixtures轉儲數據到json使用以下,但結果是一個空的列表。任何在這裏做錯了?Django 1.3爲特定的應用程序燈具

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

編輯:感興趣的應用程序不是默認的數據庫別名。能夠成功使用dumpdata作爲默認數據庫別名,而不提及<app-name>,但不能用於其他數據庫。

謝謝。

回答

3

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。這使我可以挑選出任何數據我想用正常的Querysets - 過濾,排序,排除等 - 然後將其序列化爲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) 

然後在文本編輯器中重新格式化並粘貼到夾具文件中。

+0

超級。非常感謝所有有用的信息.. –

1

應該是--indent=5而不是--indent 5。不知道這是你的問題,但值得嘗試。

另外,FWIW,JSON是默認值,所以--format=json是不必要的。

+0

其實,剛剛測試過,並且缺少'='並不會導致問題。你有什麼應該工作。你確定有實際的數據嗎? –

+0

是的,有數據。 .objects.all()帶回結果! –

1

首先,試試這個:

python manage.py dumpdata <app-name> 

如果你看到在輸出相同的數據時,第二個應該工作!

後,嘗試了這一點:

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

但是,應確保它在你的settings.INSTALLED_APPS並且還具有完全相同的名字!

相關問題