2009-04-06 17 views
14

में कस्टम क्रियाएं मेरे पास न्यूज़लेटर मॉडल है। अब मैं करने में सक्षम होना समाचार पत्र (और यहां तक ​​पुनः भेजें यह) Django व्यवस्थापक से भेज चाहते हैं।मेरे Django एप में Django व्यवस्थापक

मैं इसे Model.save() विधि पर एक हुक के साथ कर सकता हूं लेकिन क्या मॉडल का कोई दूसरा तरीका नहीं है?

धन्यवाद

उत्तर

16

Admin actions आप आसानी से जो व्यवस्थापक की सूची पृष्ठों से चयनित आइटम पर किया जा सकता कस्टम कार्यों ऊपर हुक करने की अनुमति है।

+0

यह एक अच्छा समाधान लगता है

def available (modeladmin,request,queryset): queryset.update(status='ava') def not_available (modeladmin,request,queryset): queryset.update(status='not') 

बदलने कुछ करने की कोशिश कर सकते हैं। मुझे नहीं लगता कि यह मेरी साइट को अपडेट करने में एक बड़ी समस्या होगी, लेकिन Django 1.1 से पहले लोग यह कैसे करते थे? – Lorenzo

+1

यह सुविधा वास्तव में एक तृतीय-पक्ष ऐप के रूप में शुरू हुई: http://code.google.com/p/django-batchadmin/ –

+0

बस एक अपडेट; Django में अब 1.1 के बाद सभी संस्करणों में व्यवस्थापक क्रियाएं शामिल हैं: http://docs.djangoproject.com/en/1.2/ref/contrib/admin/actions/ –

1

यदि आप इसे व्यवस्थापक से कर रहे हैं तो आपको सेव() विधि को ओवरराइड करना होगा, लेकिन यह AdminModel सेव हो सकता है ... पूर्ण मॉडल सहेजने की आवश्यकता नहीं है।

हालांकि, अगर आप ईमेल के बहुत ईमेल कर रहे हैं, एक बेहतर दृष्टिकोण django-mailer जो बाद में प्रसंस्करण के लिए एक कतार में ईमेल डालता है स्थापित करने के लिए किया जाएगा और उसके बाद एक नए प्रबंधन कमांड के साथ आप प्रदान करता है: send_mail।

तो एक बार जब आप न्यूज़लेटर भेजने के लिए तैयार हो जाते हैं तो आप मैन्युअल रूप से python manage.py send_mail चला सकते हैं। त्रुटियों वाले किसी भी ईमेल को स्थगित कतार में स्थानांतरित कर दिया जाएगा जहां आप उन्हें बाद में भेजना पुनः प्रयास कर सकते हैं।

क्रॉन से manage.py send_mail चलाकर आप इसे स्वचालित कर सकते हैं।

यदि आप वास्तव में फैंसी प्राप्त करना चाहते हैं और इसे व्यवस्थापक साइट से करते हैं, तो django-chronograph इंस्टॉल करें और वहां से अपना send_mail शेड्यूल सेट करें।

+0

ModelAdmin.save() और मॉडल के बीच क्या अंतर होगा। बचाना()? – Lorenzo

+0

मतलब mod.py में अपने मॉडल में सहेजने के बजाय मतलब आप अपने व्यवस्थापक में सहेजते हैं। Admin.py में व्यवस्थापक एडमिन क्लास। –

+0

यहां दस्तावेज़ देखें: http://docs.djangoproject.com/en/dev/ref/contrib/admin/#save-model-self-request-obj-form-change –

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