Данные дампа Django для одной модели? - PullRequest
122 голосов
/ 11 июля 2009

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

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

python manage.py dumpdata myapp

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

Ответы [ 7 ]

211 голосов
/ 11 июля 2009

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

./manage.py dumpdata myapp1 myapp2.my_model

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

django-admin dumpdata [app_label[.ModelName] [app_label[.ModelName] ...]]
95 голосов
/ 11 июля 2009

Как уже отмечалось, вы не можете сделать это с помощью команды 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()
6 голосов
/ 07 августа 2017

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

Синтаксис:

python manage.py dumpdata app_name.model_name

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

python manage.py dumpdata auth.group_permission

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

6 голосов
/ 11 июля 2009

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

./manage.py dumpdata myapp.my_model
4 голосов
/ 21 мая 2015

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

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

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

./manage.py dumpdata myapp2 myapp2.my_model

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

1 голос
/ 16 апреля 2012

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

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

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

1 голос
/ 11 июля 2009

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

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