2009-07-11 12 views
99

क्या मैं Django में पूरे ऐप के बजाए सिर्फ एक ही मॉडल पर कर सकता हूं, और यदि ऐसा है, तो कैसे?Django एक मॉडल के लिए डेटा डंप?

एक ऐप्लिकेशन के लिए यह होगा:

python manage.py dumpdata myapp 

हालांकि, मैं इस तरह के "myapp.mymodel" के रूप में कुछ विशिष्ट मॉडल, फेंक दिया जाना चाहते हैं। कारण यह है कि मेरे पास कुछ विशाल, 3 मिलियन रिकॉर्ड प्लस हैं, उसी ऐप में डेटासेट जिन्हें मैं डंप नहीं करना चाहूंगा।

+0

मुझे लगता है कि आपका प्रश्न समझना आसान नहीं है। आप अपने डेटाबेस में एक एसक्यूएल डंप लोड करना चाहते हैं?या आप किसी प्रकार के toString() पर और मॉडल के उदाहरण करना चाहते हैं? –

उत्तर

179

संस्करण 1.1 और अधिक से अधिक के रूप में, Django dumpdata प्रबंधन आदेश की अनुमति देता है: आप इस तरह एक व्यक्ति मॉडल डंप कर सकते हैं और कमांड लाइन पर मॉडल।

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

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

+14

गैथ, पोस्ट पर नकारात्मक वोट को समझ में नहीं आया जो लगभग 2 साल पुराना है। इसके अलावा कोड ऊपर v1.1 के साथ भी ठीक काम किया। नई रिलीज में नई विशेषताएं पुराने उत्तरों को अमान्य नहीं बनाती हैं। – simplyharsh

+0

और ऐप के दूसरे उदाहरण में मैं यह डेटा कैसे जोड़ूं? – aguilarpgc

5

मुझे लगता है कि आपके पास आपके प्रश्न का समाधान था।

./manage.py dumpdata myapp1 myapp2.my_model 

भी कर सकते हैं अलग एक साथ कई एप्लिकेशन: आप अलग-अलग तालिकाओं के डेटा डंप करने के लिए

./manage.py dumpdata myapp.my_model 
+0

मैंने पोस्ट करने से पहले इसे आजमाया। कोई भाग्य नहीं था मैं django 1.0 में हूँ। myapp.models.mymodel भी कोशिश की? – nategood

+0

आपको काम करने के लिए ट्रंक का उपयोग करने की आवश्यकता है। – priestc

1

एक समाधान यदि आप किसी अन्य अनुप्रयोग बनाने के लिए और मॉडल की नकल लेकिन db_table मेटा विकल्प के साथ मौजूदा टेबल में यह बात सकता है: यहाँ धर्मवैधानिक परिभाषा है। फिर आप उन मॉडलों को डंप कर सकते हैं जिन्हें आपने नए एप में कॉपी किया था। आप मौजूदा ऐप प्रभावित नहीं होंगे।

86

जैसा कि ध्यान दिया गया है, आप Django 1.0 में manage.py कमांड के माध्यम से ऐसा नहीं कर सकते हैं। लेकिन अगर आप loaddata का उपयोग कर इसे लोड JSON फ़ाइल निर्यात करने के लिए एक स्क्रिप्ट का उपयोग कर सकता है, और:

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

यह एक महान स्क्रिप्ट है क्योंकि यदि आप चाहें तो आप और अधिक बारीक हो सकते हैं। यदि आप इसके बजाय लाइन 3 पर एक .filter (...) करते हैं तो आप केवल विशिष्ट रिकॉर्ड को डंप कर सकते हैं। –

+1

अच्छा! इस तरह निश्चित रूप से बेहतर नियंत्रण। –

0

मैं एक प्रबंधन द्वारा बनाए गए आदेश एक मॉडल प्रति आधार पर एक दृढ़ उत्पन्न करते हैं। फिक्स्चर चल रहा द्वारा उत्पन्न किया जा सकता है:

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

कोड पर:

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

मैं हैं: https://gist.github.com/2394883

3

सफलता के लिए मैं इसे दो बार कहते हैं, और इस तरह के मॉडल दो बार निर्दिष्ट करते हैं, के लिए था केवल ने कहा

./manage.py dumpdata myapp2 myapp2.my_model 

मैं में सभी मॉडलों के साथ पानी भर गया myapp2, इस तथ्य के बावजूद कि मैंने my_model निर्दिष्ट किया है।

2

सभी डेटा django मॉडल से जेसन प्रारूप में लें।

सिंटेक्स:

python manage.py dumpdata app_name.model_name 

के लिए उदाहरण group_permission मॉडल से डंपिंग डेटा जो Django में डिफ़ॉल्ट प्रमाणन एप्लिकेशन में रहते हैं।

python manage.py dumpdata auth.group_permission 

उत्पादन के लिए सांत्वना पर एक नज़र डालें।

संबंधित मुद्दे