2009-07-11 2 views
99

Могу ли я выполнить dumpdata в Django только для одной модели, а не для всего приложения, и если да, то как?Данные дампа Django для одной модели?

Для приложения это будет:

python manage.py dumpdata myapp 

Однако, я хочу некоторые конкретные модели, такие как «myapp.mymodel» на свалку. Причина в том, что у меня есть огромные 3 миллиона записей плюс, набор данных в том же приложении, что я не хотел бы сбрасывать.

+0

Я нахожу ваш вопрос непростым для понимания. Вы хотите загрузить SQL-дамп в свою базу данных?Или вы хотите сделать что-то вроде toString() и экземпляр модели? –

ответ

179

В версии 1.1 и выше, команда управления Джанго dumpdata позволяет сбросить данные из отдельных таблиц:

./manage.py dumpdata myapp1 myapp2.my_model 

Вы можете также отдельные несколько приложений и модели в командной строке. Вот каноническое определение:

django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]] 
+18

django 1.3 ./manage.py dumpdata myapp.mymodel – gath

+14

gath, не понял отрицательный голос на посту, которому почти 2 года. Кроме того, выше код работал нормально даже с v1.1. Новые функции в новых версиях не делают недопустимыми старые ответы. – simplyharsh

+0

И как добавить эти данные в другой экземпляр приложения ?. – aguilarpgc

5

Я думаю, у вас было решение в вашем вопросе. Вы можете вывести индивидуальную модель, как это:

./manage.py dumpdata myapp.my_model 
+0

Я попробовал это перед публикацией. не повезло. Я в django 1.0. также попробовал myapp.models.mymodel? – nategood

+0

Для этого вам нужно использовать багажник. – priestc

1

В качестве временного решения можно сделать другое приложение и скопировать модель, но указать его в существующую таблицу с db_table мета вариант. Затем вы можете просто сбросить модели, которые вы скопировали в новое приложение. На существующее приложение не повлияет.

86

Как уже отмечалось, вы не можете сделать это с помощью команды manage.py в Django 1.0. Однако вы можете использовать скрипт, чтобы экспортировать файл в формате JSON, и загрузить его с помощью loaddata:

from django.core import serializers 
from myproject.myapp import models 
data = serializers.serialize("json", models.MyModel.objects.all()) 
out = open("mymodel.json", "w") 
out.write(data) 
out.close() 
+4

Это отличный сценарий, потому что вы можете получить еще более гранулированный, если хотите. Если вы вместо этого сделаете .filter (...) в строке три выше, вы можете сбросить только нужные записи. –

+1

Ницца! Определенно более тонкое управление этим способом. –

0

Я создал управление командовать генерировать прибор из расчета на одну модель основе. Светильники могут быть получены с помощью бега:

./manage generate_fixtures app.model.MyModel --file=dump/MyModel.json 

код по адресу: https://gist.github.com/2394883

3

Для успеха я должен был сказать это дважды, и уточните модель в два раза, как:

./manage.py dumpdata myapp2.my_model myapp2.my_model 

Если я только

./manage.py dumpdata myapp2 myapp2.my_model 

Я наводнен всеми моделями в myapp2, несмотря на то, что я указал my_model.

2

Возьмите все данные в формате json из модели django.

Синтаксис:

python manage.py dumpdata app_name.model_name 

Для Пример демпинг данные group_permission модели, которые проживают в Идент по умолчанию приложения в Django.

python manage.py dumpdata auth.group_permission 

Для вывода посмотрите на консоли.

Смежные вопросы