Данные дампа Django для одной модели?
Могу ли я выполнить dumpdata
в Django только для одной модели, а не для всего приложения, и если да, то как
Для приложения это будет:
python manage.py dumpdata myapp
Однако я хочу, чтобы какая-то конкретная модель, например "myapp.mymodel", была сброшена. Причина в том, что у меня есть огромные 3 миллиона записей плюс, наборы данных в том же приложении, которые я бы не хотел сбрасывать.
Ответы
Ответ 1
Начиная с версии 1.1 и выше команда управления Django dumpdata
позволяет вам удалять данные из отдельных таблиц:
./manage.py dumpdata myapp1 myapp2.my_model
Вы также можете отделить несколько приложений и моделей от командной строки. Здесь каноническое определение:
django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]
Ответ 2
Как уже отмечалось, вы не можете сделать это с помощью команды manage.py в Django 1.0. Однако вы можете использовать script для экспорта файла 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()
Ответ 3
Думаю, у вас было решение в вашем вопросе. Вы можете сбросить отдельную модель следующим образом:
./manage.py dumpdata myapp.my_model
Ответ 4
Для успеха я должен был сказать это дважды и указать модель два раза, например:
./manage.py dumpdata myapp2.my_model myapp2.my_model
Если я сказал только
./manage.py dumpdata myapp2 myapp2.my_model
Меня охватили все модели в myapp2, несмотря на то, что я указал my_model.
Ответ 5
В качестве обходного пути вы можете сделать другое приложение и скопировать модель, но указать ее на существующую таблицу с помощью опции meta db_table. Затем вы можете просто сбросить модели, которые вы скопировали в новое приложение. На существующее приложение не повлияет.
Ответ 6
Возьмите все данные в формате json из модели django.
Синтаксис:
python manage.py dumpdata app_name.model_name
Для example сбрасывать данные из модели group_permission, которые находятся в объявлении по умолчанию в django.
python manage.py dumpdata auth.group_permission
Для вывода взгляните на консоль.
Ответ 7
Я создал команду управления, сгенерирующую привязку для каждой модели.
Светильники могут быть сгенерированы при запуске:
./manage generate_fixtures app.model.MyModel --file=dump/MyModel.json
code at: https://gist.github.com/2394883