문제

수행 할 수 있습니까? 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()

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

./manage.py dumpdata myapp.my_model

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

통사론:

python manage.py dumpdata app_name.model_name

을 위한 예시 Django의 기본 인증 앱에 상주하는 Group_Permission 모델에서 데이터를 덤프합니다.

python manage.py dumpdata auth.group_permission

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

성공을 위해 두 번 말하고 모델을 두 번 지정해야했습니다.

./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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top