Данные дампа Django для одной модели?

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

для приложения это будет выглядеть так:

python manage.py dumpdata myapp

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

7 ответов


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

./manage.py dumpdata myapp1 myapp2.my_model

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

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

Как уже отмечалось, вы не можете сделать это через 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()

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

./manage.py dumpdata myapp.my_model

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

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

Если бы я только сказал

./manage.py dumpdata myapp2 myapp2.my_model

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


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

синтаксис:

python manage.py dumpdata app_name.model_name

на пример сброс данных из модели group_permission, которые находятся в приложении auth по умолчанию в django.

python manage.py dumpdata auth.group_permission

для вывода взгляните на консоль.


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


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

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

код на:https://gist.github.com/2394883