Django1.10:
1) ओवरराइड admin/submit_line.html
:
{% load i18n admin_urls %}
<div class="submit-row">
{% if extra_buttons %}
{% for button in extra_buttons %}
{{ button }}
{% endfor %}
{% endif %}
{% if show_save %}<input type="submit" value="{% trans 'Save' %}" class="default" name="_save" />{% endif %}
{% if show_delete_link %}
{% url opts|admin_urlname:'delete' original.pk|admin_urlquote as delete_url %}
<p class="deletelink-box"><a href="{% add_preserved_filters delete_url %}" class="deletelink">{% trans "Delete" %}</a></p>
{% endif %}
{% if show_save_as_new %}<input type="submit" value="{% trans 'Save as new' %}" name="_saveasnew" />{% endif %}
{% if show_save_and_add_another %}<input type="submit" value="{% trans 'Save and add another' %}" name="_addanother" />{% endif %}
{% if show_save_and_continue %}<input type="submit" value="{% trans 'Save and continue editing' %}" name="_continue" />{% endif %}
</div>
यह निश्चित रूप से, मान लिया गया है, कि button
की स्ट्रिंग प्रतिनिधित्व उपयुक्त ब्राउज़र है input
या button
तत्व, और django.utils.safestring.mark_safe
के साथ सुरक्षित चिह्नित किया गया है। वैकल्पिक रूप से, आप safe
टेम्पलेट फ़िल्टर का उपयोग कर सकते हैं या button
के गुणों को सीधे <input>
बनाने के लिए उपयोग कर सकते हैं। मेरी राय में, पाइथन स्तर पर ऐसी चीजों को अलग करना बेहतर है।
2) अवहेलना MyModelAdmin.change_view
:
def change_view(self, request, object_id, form_url='', extra_context=None):
extra_context = extra_context or self.extra_context()
return super(PollAdmin, self).change_view(
request, object_id, form_url, extra_context=extra_context,
)
इस विधि आप आसानी से किसी ModelAdmin
बटन जोड़ने के लिए सक्षम बनाता। वैकल्पिक रूप से चरण (1) तक, आप admin/change_form.html
का विस्तार कर सकते हैं और submit_row
ब्लॉक को ओवरराइड कर सकते हैं। टेम्पलेट में आवश्यक अतिरिक्त टैग के कारण यह थोड़ा और वर्बोज़ होगा।
यदि आप अपने सभी मॉडलों (या एक विशिष्ट सबसेट) में अतिरिक्त कार्रवाई उपलब्ध करना चाहते हैं तो वांछित कार्यक्षमता के साथ ModelAdmin
उपclass (उदाहरण के लिए आपके मॉडल में संग्रह जोड़ना होगा। आप हटाए जाने के लिए ओवरराइड भी जोड़ सकते हैं- - और अन्य डिफ़ॉल्ट बटन - ताकि मोड को हटाए जाने के बजाय संग्रहीत किया जा सके; इसके लिए कुछ टेम्पलेट संशोधनों की आवश्यकता होगी)
एक अलग पृष्ठ क्यों नहीं बनाते जिसके लिए व्यवस्थापक लॉगिन की आवश्यकता होती है? यह व्यवस्थापक पृष्ठ के साथ गड़बड़ करने से अक्सर आसान है। –
कस्टम बटन के लिए एक दूरस्थ विकल्प व्यवस्थापक क्रिया https://docs.djangoproject.com/en/1 है।10/ref/contrib/admin/actions/ – Wtower