2009-08-21 17 views
6

मैं Django व्यवस्थापक इंटरफ़ेस के लिए कुछ कस्टम दृश्य बना रहा हूं जो मानक परिवर्तन-सूची को अंतरिम चरण के रूप में उपयोग करते हैं। यह ठीक काम करता है, इस तथ्य के अलावा परिवर्तन-सूची पृष्ठ एच 1 'बदलने के लिए ऑब्जेक्ट का चयन करें' है। 'चेंज' उस क्रिया के लिए सही क्रिया नहीं है जो उपयोगकर्ता मेरे कस्टम विचारों में उपक्रम करेगा।परिवर्तन Django व्यवस्थापक परिवर्तन सूची शीर्षक पाठ

मैं django.contrib.admin टेम्पलेट्स है कि परिवर्तन-सूची पृष्ठों (change_list.html और change_list_results.html) का लेआउट नियंत्रित पाया है, लेकिन मैं नहीं मिल सकता है, जहां शीर्षक से आपूर्ति की है। मुझे लगता है कि यह एक चर से किसी एक दृश्य द्वारा पारित एक चर है?

मैं इस पाठ को कुछ कम भ्रामक उदाहरण के साथ कैसे ओवरराइड कर सकता हूं उदा। 'बदलने के लिए ऑब्जेक्ट का चयन करें' के बजाय 'ऑब्जेक्ट का चयन करें'? मैं इसे सभी परिवर्तन-सूची दृश्यों में बदलने के साथ ठीक हूं, न केवल उन विशेषताओं को जिन्हें मैं अनुकूलित करने की कोशिश कर रहा हूं; लेकिन अगर मैं संभव हो तो django.contrib.admin कोड के संशोधन के विरोध में एक समाधान को ओवरराइड पसंद करूंगा।

अद्यतन: मुझे परिवर्तन सूची के लिए जिम्मेदार दृश्य मिला है, यह django\contrib\admin\views में है। परिवर्तनीय self.title लाइन 69 (Django 1.0) पर है। मैं परिणाम मैं इस लाइन का संपादन कर रहा हूँ प्राप्त कर ली है

self.title = (self.is_popup and ugettext('Select %s') % force_unicode(self.opts.verbose_name) or ugettext('Select %s to change') % force_unicode(self.opts.verbose_name)) 

self.title = (self.is_popup and ugettext('Select %s') % force_unicode(self.opts.verbose_name) or ugettext('Select %s') % force_unicode(self.opts.verbose_name)) 

पढ़ने के लिए मैं अभी भी एक ही परिणाम है कि नहीं करता है को प्राप्त करने का एक बेहतर तरीका सुनने के लिए वास्तव में रुचि होगी django.contrib.admin कोड हैकिंग को शामिल करें - ऐसा लगता है कि शीर्षक को जिस तरह से मैं चाहता हूं उसे पहले से ही एक विकल्प है, लेकिन मुझे यकीन नहीं है कि इसे कैसे ट्रिगर किया जाए?

उत्तर

2

ChangeList अनुकूलन के लिए पहले ही टिकट है: http://code.djangoproject.com/ticket/9749। यह व्यवस्थापक अनुप्रयोग के कई अतिरिक्त पहलुओं को बदलने की क्षमता देगा। दुर्भाग्य से आपके लक्ष्यों को प्राप्त करने के लिए कोई साफ तरीका नहीं है।

+0

हम्म, वह पैच बहुत आशाजनक दिखता है। आइए उम्मीद करते हैं कि यह जाता है। दुर्भाग्य से इस समय मुझे बहुत अच्छा नहीं लगता है, क्योंकि मैं एसवीएन का उपयोग करने के बजाय उत्पादन कोड से चिपकने की कोशिश कर रहा हूं। वजन घटाने के लिए धन्यवाद - ऐसा लगता है कि मुझे केवल हैक का उपयोग करना होगा और भविष्य के उन्नयन के लिए मेरे परिवर्तनों को दस्तावेज करने के लिए सावधान रहना होगा। यह गैर-महत्वपूर्ण है अगर यह मुझे लगता है कि अपग्रेड द्वारा पिछले कोड पर रीसेट हो जाता है। –

0

Django के वर्तमान संस्करण के लिए:

class CustomChangeList(django.contrib.admin.views.main.ChangeList): 
    def __init__(self, *args, **kwargs): 
     super().__init__(*args, **kwargs) 
     self.title = 'My Cool Title' 

class MyAdmin(ModelAdmin): 
    def get_changelist(self, request, **kwargs): 
     return CustomChangeList 
6

सुनिश्चित नहीं हैं कि अगर अभी भी प्रासंगिक है, लेकिन एक और तरीका यह changelist_view विधि के लिए extra_content गुजर किया जाएगा करने के लिए। पूर्व के लिए:

from django.contrib import admin 

class MyCustomAdmin(admin.ModelAdmin): 

    def changelist_view(self, request, extra_context=None): 
     extra_context = {'title': 'Change this for a custom title.'} 
     return super(MyCustomAdmin, self).changelist_view(request, extra_context=extra_context) 
संबंधित मुद्दे