2011-11-29 8 views
26

क्या चुनिंदा फ़िल्टर करना संभव है जो Django के डंपडाटा प्रबंधन कमांड आउटपुट रिकॉर्ड करता है? मेरे पास कुछ मॉडल हैं, जिनमें से प्रत्येक लाखों पंक्तियों के साथ है, और मैं केवल एक मॉडल में रिकॉर्ड्स को एक विशिष्ट मानदंड फिट करने के साथ-साथ उन सभी रिकॉर्ड-रिकॉर्ड किए गए सभी विदेशी-कुंजी जुड़े रिकॉर्ड रिकॉर्ड करना चाहता हूं।डीजेगो सिलेक्टिव डंपडाटा

इस उपयोग-मामले पर विचार करें। मान लें कि मेरे पास एक उत्पादन डेटाबेस था जहां मेरे उपयोगकर्ता मॉडल में लाखों रिकॉर्ड हैं। मेरे पास उपयोगकर्ता मॉडल का संदर्भ देने वाले कई अन्य मॉडल (लॉग, लेनदेन, खरीद, बुकमार्क आदि) हैं। मैं अपने Django ऐप पर विकास करना चाहता हूं, और मैं यथार्थवादी डेटा का उपयोग करके परीक्षण करना चाहता हूं। हालांकि, मेरा उत्पादन डेटाबेस इतना बड़ा है, मैं वास्तव में पूरी चीज का स्नैपशॉट नहीं ले सकता और इसे स्थानीय रूप से लोड नहीं कर सकता। तो आदर्श रूप में, मैं 50 यादृच्छिक उपयोगकर्ता रिकॉर्ड डंप करने के लिए डंपडाटा का उपयोग करना चाहता हूं, और जेएसओएन के सभी संबंधित रिकॉर्ड, और विकास डेटाबेस को पॉप्युलेट करने के लिए इसका उपयोग करना चाहता हूं।

क्या इसे पूरा करने का कोई आसान तरीका है?

+1

अच्छा सवाल। और यदि आप इस टेस्ट डेटा को सार्वजनिक बनाना चाहते हैं तो कभी-कभी आप कुछ फ़ील्ड (जैसे पासवर्ड और इसी तरह) को पट्टी करना चाहते हैं। – Mitar

उत्तर

16

मुझे लगता है कि django-fixture-magic एक लायक हो सकता है।

आपको Scrubbing your Django database में कुछ अतिरिक्त पृष्ठभूमि जानकारी मिलेगी।

+0

मुझे इस कोड को कुछ हद तक ट्विक करना पड़ा, और फिर भी यह थोड़ा अक्षम है, लेकिन यह आम तौर पर मेरे लिए काम करता है। – Cerin

+0

हाँ, मैं भी: https://github.com/davedash/django-fixture-magic/issues/45 – daigorocub

3

यह मेरे प्रश्न का एक आसान जवाब नहीं है, लेकिन मुझे Django के अंतर्निहित natural keys feature पर कुछ दिलचस्प दस्तावेज़ मिले, जो प्राथमिक कुंजी के बिना क्रमबद्ध रिकॉर्ड का प्रतिनिधित्व करने की अनुमति देंगे। दुर्भाग्यवश, ऐसा लगता है कि यह पूरी तरह से डंपडाटा में एकीकृत नहीं है, और प्राकृतिक कुंजी पर पूरी तरह भरोसा करने के लिए पुराना outstanding ticket है।

ऐसा लगता है कि serializers.serialize() फ़ंक्शन विशिष्ट मॉडल उदाहरणों की मनमानी सूची के क्रमिकरण की अनुमति देता है।

संभवतः, अगर मैंने अपने सभी मॉडलों पर एक प्राकृतिक_की() विधि लागू की है, और फिर serializers.serialize ([users.objects.filter (मानदंड)] कहा जाता है), यह मुझे पूरा करने के करीब आना चाहिए। मुझे सभी एफके संदर्भों को क्रॉल करने के लिए एक फ़ंक्शन लिखना पड़ सकता है, और serialize() को पारित वस्तुओं की सूची में शामिल करना पड़ सकता है।

5

यह टुकड़ा आप (यह रिश्तों अनुसरण करता है और उन्हें serializes) के लिए उपयोगी हो सकता है:

http://djangosnippets.org/snippets/918/

तुम भी है कि प्रबंधन आदेश का उपयोग करें और डिफ़ॉल्ट प्रबंधकों रद्द कर सकते थे जो भी मॉडल के लिए आप कस्टम वापस जाने के लिए चाहते हैं क्वेरीसमूहों।

+1

उपरोक्त स्निपेट के निश्चित/अद्यतन कांटा: https://djangosnippets.org/snippets/10506/ – tutuDajuju

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