[django] 단일 모델에 대한 장고 덤프 데이터?

나는을 수행 할 수 있습니다 dumpdata에서 장고 가 아니라 전체 응용 프로그램보다, 단 하나의 모델에, 만일 그렇다면, 어떻게?

앱의 경우 다음과 같습니다.

python manage.py dumpdata myapp

그러나 “myapp.mymodel”과 같은 특정 모델을 덤프하고 싶습니다. 그 이유는 동일한 응용 프로그램에서 덤프하고 싶지 않은 거대한 3 백만 개의 레코드와 데이터 세트가 있다는 것입니다.



답변

버전 1.1 이상에서 Django dumpdata관리 명령을 사용하면 개별 테이블에서 데이터를 덤프 할 수 있습니다.

./manage.py dumpdata myapp1 myapp2.my_model

명령 줄에서 여러 앱과 모델을 분리 할 수도 있습니다. 표준 정의는 다음과 같습니다.

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


답변

언급했듯이 Django 1.0의 manage.py 명령을 통해이 작업을 수행 할 수 없습니다. 그러나 스크립트를 사용하여 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()


답변

django 모델에서 모든 데이터를 json 형식으로 가져옵니다.

통사론:

python manage.py dumpdata app_name.model_name

예를 들어 django의 기본 인증 앱에있는 group_permission 모델에서 데이터를 덤프합니다.

python manage.py dumpdata auth.group_permission

출력은 콘솔을 살펴보십시오 .


답변

나는 당신이 당신의 질문에 해결책을 가지고 있다고 생각합니다. 다음과 같이 개별 모델을 덤프 할 수 있습니다.

./manage.py dumpdata myapp.my_model


답변

성공하려면 두 번 말하고 다음과 같이 모델을 두 번 지정해야했습니다.

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

내가 말만하면

./manage.py dumpdata myapp2 myapp2.my_model

my_model을 지정 했음에도 불구하고 myapp2의 모든 모델로 넘쳤습니다.


답변

이 문제를 해결하려면 다른 앱을 만들고 모델을 복사하되 db_table 메타 옵션을 사용하여 기존 테이블을 가리 키십시오. 그런 다음 복사 한 모델을 새 앱에 덤프 할 수 있습니다. 기존 앱은 영향을받지 않습니다.


답변

모델별로 조명기를 생성하는 관리 명령을 만들었습니다. 다음을 실행하여 설비를 생성 할 수 있습니다.

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

코드 : https://gist.github.com/2394883