django

2012-02-04 4 views
56

में एकाधिक ऑब्जेक्ट्स हटाएं मुझे वेबपृष्ठ का उपयोग करके django में अपने डेटाबेस से हटाए जाने के लिए कई ऑब्जेक्ट्स चुनने की आवश्यकता है। चुनने के लिए कोई श्रेणी नहीं है इसलिए मैं उन सभी से हटा नहीं सकता हूं। क्या मुझे अपना खुद का डिलीट फॉर्म लागू करना है और इसे डीजेंगो में संसाधित करना है या क्या django के पास पहले से ही ऐसा करने का कोई तरीका है? जैसा कि इसे व्यवस्थापक इंटरफ़ेस में कार्यान्वित किया गया है।django

उत्तर

101

आप जो भी क्वेरीज़ चाहते हैं उसे हटा सकते हैं। उदाहरण के लिए,

Post.objects.all().delete() 

कुछ पोस्ट मॉडल के साथ सभी ब्लॉग पोस्ट को हटाने के लिए और

Post.objects.filter(pub_date__gt=datetime.now()).delete() 

आप करते हैं, फिर भी, एक तरह से संकीर्ण करने के लिए साथ आने के लिए की जरूरत है एक भविष्य प्रकाशन की तारीख के साथ किसी भी पोस्ट को हटाने के लिए अपनी क्वेरीसेट नीचे। यदि आप किसी विशेष वस्तु को हटाना चाहते हैं, तो delete generic view देखें।

संपादित करें:

गलतफहमी के लिए खेद है। मुझे लगता है कि जवाब कहीं के बीच है। अपने आप को लागू करने के लिए, ModelForm एस और generic views गठबंधन करें। अन्यथा, तीसरे पक्ष के ऐप्स देखें जो समान कार्यक्षमता प्रदान करते हैं। related question में, अनुशंसा django-filter थी।

+1

नहीं आपने इस सवाल को गलत समझा है। मैं समझता हूं कि मैं सबकुछ हटा सकता हूं। लेकिन मुझे वेबपृष्ठ पर किसी फॉर्म के साथ हटाने के लिए ऑब्जेक्ट्स का चयन करना होगा। और उसके बाद मेरे विचारों में प्रपत्र से लौटाए गए डेटा को संसाधित करें। फिर डेटा के माध्यम से लूपिंग के रूप में हटाने के रूप में हटाए गए कार्यों के माध्यम से लूप। लेकिन मैं जानना चाहता था कि डीजेंगो में इसे लागू करने के लिए सबसे अच्छा अभ्यास क्या है। – Dean

+0

आह, मेरी गलती! मैं या तो 'थर्ड-पार्टी ऐप, या' मॉडलफॉर्म 'के साथ सामान्य दृश्यों का उपयोग करता हूं। –

+5

@ डीन, उस हटाए गए दृश्य को देखें। या आप बस अपना खुद का विचार लिख सकते हैं ... मेरा मतलब है कि आखिरकार आप शायद पीके की एक सूची प्राप्त कर रहे हैं और अपने मॉडल पर डिलीट कर रहे हैं ... 'MyModel.objects.filter (id__in = request.POST.getlist (' delete_list ')) .delete() 'और मुझे यकीन है कि आप यह सुनिश्चित करना चाहते हैं कि एक यादृच्छिक व्यक्ति पीके का अनुमान लगाकर आपके डीबी में सभी ऑब्जेक्ट्स को हटा नहीं सके। –