2009-07-11 12 views
99

Tôi có thể thực hiện dumpdata trong Django chỉ trên một mô hình duy nhất, chứ không phải toàn bộ ứng dụng và nếu có, làm cách nào?Dữ liệu kết xuất Django cho một mô hình đơn lẻ?

Đối với một ứng dụng nó sẽ là:

python manage.py dumpdata myapp 

Tuy nhiên, tôi muốn có một số mô hình cụ thể, chẳng hạn như "myapp.mymodel" được đổ. Lý do là, tôi có một số lớn, 3 triệu hồ sơ cộng với, bộ dữ liệu trong cùng một ứng dụng mà tôi sẽ không thích bán phá giá.

+0

Tôi thấy câu hỏi của bạn không dễ hiểu. Bạn muốn tải một kết xuất SQL vào cơ sở dữ liệu của bạn?Hoặc bạn muốn làm một số loại toString() trên và ví dụ của một mô hình? –

Trả lời

179

Tính đến phiên bản 1.1 và cao hơn, lệnh quản lý Django dumpdata cho phép bạn để đổ dữ liệu từ các bảng cá nhân:

./manage.py dumpdata myapp1 myapp2.my_model 

Bạn có nhiều ứng dụng cũng riêng biệt và các mô hình trên dòng lệnh. Dưới đây là định nghĩa kinh điển:

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

django 1.3 ./manage.py dumpdata myapp.mymodel – gath

+14

gath, không hiểu phiếu bầu phủ định trên bài đăng gần 2 năm tuổi. Hơn nữa ở trên mã làm việc tốt ngay cả với v1.1. Các tính năng mới trong bản phát hành mới không làm cho câu trả lời cũ hơn không hợp lệ. – simplyharsh

+0

Và làm cách nào để thêm dữ liệu này vào một phiên bản ứng dụng khác ?. – aguilarpgc

5

Tôi nghĩ bạn đã có giải pháp trong câu hỏi của mình. Bạn có thể đổ một mô hình cá nhân như thế này:

./manage.py dumpdata myapp.my_model 
+0

tôi đã thử trước khi đăng. không có may mắn. Tôi đang ở django 1.0. cũng đã thử myapp.models.mymodel? – nategood

+0

bạn cần phải sử dụng thân cây để làm việc này. – priestc

1

Giải pháp thay thế bạn có thể tạo một ứng dụng khác và sao chép mô hình nhưng trỏ nó vào bảng hiện có với tùy chọn db_table meta. Sau đó, bạn chỉ có thể đổ các mô hình bạn đã sao chép vào ứng dụng mới. Ứng dụng hiện tại của bạn sẽ không bị ảnh hưởng.

86

Như đã lưu ý, bạn không thể thực hiện việc này thông qua lệnh manage.py trong Django 1.0. Tuy nhiên bạn có thể sử dụng một kịch bản để xuất tập tin JSON, và tải nó bằng cách sử 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() 
+4

Đây là một tập lệnh tuyệt vời vì bạn có thể nhận được nhiều chi tiết hơn nếu bạn muốn. Nếu bạn thay vì làm một .filter (...) trên dòng ba ở trên, bạn có thể đổ chỉ các bản ghi cụ thể mà bạn muốn. –

+1

Rất tuyệt! Chắc chắn kiểm soát tốt hơn theo cách này. –

0

tôi đã tạo ra một quản lý chỉ huy tạo ra một vật cố trên một cơ sở cho mỗi mô hình. Đèn chiếu sáng có thể được tạo ra bởi hoạt động:

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

mã tại: https://gist.github.com/2394883

3

Đối với thành công tôi phải nói hai lần, và chỉ định mô hình hai lần, như:

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

Nếu tôi chỉ cho biết

./manage.py dumpdata myapp2 myapp2.my_model 

Tôi bị tràn ngập tất cả các mô hình trong myapp2, mặc dù thực tế là tôi đã chỉ định my_model.

2

Đưa tất cả dữ liệu vào định dạng json từ mô hình django.

Cú pháp:

python manage.py dumpdata app_name.model_name 

Đối dụ dữ liệu bán phá giá từ mô hình group_permission mà cư trú trong ứng dụng auth mặc định trong django.

python manage.py dumpdata auth.group_permission 

Đối với đầu ra có một cái nhìn vào console.