Данные дампа 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