Светильники Django 1.3 для конкретного приложения - PullRequest
1 голос
/ 14 сентября 2011

Я хочу выгрузить данные в json из приборов Django 1.3, используя следующее, но в результате получается пустой список.Что-то здесь не так?

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

Редактировать: Интересующее приложение не является псевдонимом базы данных по умолчанию.Я могу успешно использовать dumpdata для псевдонима базы данных по умолчанию с / без упоминания <app-name>, но не могу для других баз данных.

Спасибо.

Ответы [ 3 ]

4 голосов
/ 14 сентября 2011

Новое в Django 1.2 - это общая опция --database для всех команд manage.py.Вы можете использовать '=' или пробел в этом.Так что попробуйте:

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 .Это позволяет мне выбрать любые данные, которые я хочу, с обычными наборами запросов - отфильтрованные, упорядоченные, исключенные и т. Д. - и затем сериализовать их в 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)

Затем переформатируйте в текстовом редакторе и вставьте в файл фикстур.

1 голос
/ 14 сентября 2011

Прежде всего, попробуйте это:

python manage.py dumpdata <app-name>

если вы видите те же данные в выводе, то вторая должна работать!

после, попробуйте это:

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

ОДНАКО убедитесь, что он указан в ваших настройках.INSTALLED_APPS, а также имеет точно такое же имя!

1 голос
/ 14 сентября 2011

Должно быть --indent=5, а не --indent 5.Не уверен, что это ваша проблема, но стоит попробовать.

Кроме того, FWIW, JSON используется по умолчанию, поэтому --format=json не требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...