2009-07-23 13 views
7

मैं एक आवेदन के लिए Django-admin को अनुकूलित कर रहा हूं। तो अब तक अनुकूलन फ़ाइल काम कर रहा है, कुछ विचार जोड़े। लेकिन मैं सोच रहा हूं कि परिवर्तन_लिस्ट डिस्प्ले में रिकॉर्ड्स लिंक को में परिवर्तन लिंक को बदलने के बजाय एक परिवर्तन पृष्ठ कैसे प्रदर्शित करें?Django-admin: रिकॉर्ड्स चेंज सूची में, संपादन फ़ॉर्म के बजाय ऑब्जेक्ट जानकारी पृष्ठ पर लिंक कैसे प्रदर्शित करें?

इस ब्लॉग पोस्ट में

: http://www.theotherblog.com/Articles/2009/06/02/ विस्तार-Django-व्यवस्थापक इंटरफ़ेस/टॉम ने कहा:

"आप देखने लिस्टिंग में छवियों या लिंक जोड़ सकते हैं एक समारोह निर्दिष्ट करके और फिर my_func.allow_tags जोड़कर = सच "

जो मैंने पूरी तरह से समझ नहीं लिया !! , यह भी हर सदस्य के लिए लिंक जोड़ने के लिए कैसे (

अभी मैं प्रोफ़ाइल समारोह है, जो मैं जब मैं रिकॉर्ड की सूची में एक सदस्य पर क्लिक करें मैं इसे प्रदर्शित कर सकते हैं (- - प्रोफ़ाइल या किसी अन्य बटन बुलाया जोड़ने) की जरूरत है संपादित करें: मुझे इस सदस्य के लिए फ़ॉर्म संपादित करने के लिए रीडायरेक्ट करें)।

मैं इसे कैसे प्राप्त कर सकता हूं?

उत्तर

20

यदि मैं आपका प्रश्न सही समझता हूं तो आप लिस्टिंग दृश्य में अपना लिंक जोड़ना चाहते हैं, और आप चाहते हैं कि वह लिंक आपके द्वारा बनाए गए कुछ जानकारी पृष्ठ पर इंगित करे।

ऐसा करने के लिए, अपने व्यवस्थापक ऑब्जेक्ट में लिंक HTML को वापस करने के लिए एक फ़ंक्शन बनाएं। फिर उस सूची का उपयोग अपनी सूची में करें। इस तरह:

class ModelAdmin(admin.ModelAdmin): 
    def view_link(self): 
     return u"<a href='view/%d/'>View</a>" % self.id 
    view_link.short_description = '' 
    view_link.allow_tags = True 
    list_display = ('id', view_link) 
+0

धन्यवाद करने के लिए PersonAdmin व्यक्ति

def get_absolute_url(self): return '/profiles/%s/' % (self.id) def profile_link(self): return '<a href="%s">%s</a>' % (self.get_absolute_url(), self.username) profile_link.allow_tags = True 

को इन दोनों तरीकों जोड़ सकते हैं और परिवर्तन: यहाँ एक पूरा मॉडल उदाहरण है जो मैं देख रहा था: डी – Hamza

+0

धन्यवाद ... एक मामूली संशोधन करना था: 'def view_link (self, o बीजे): ' –

9

पर एक नज़र डालें: http://docs.djangoproject.com/en/dev/ref/contrib/admin/, ModelAdmin.list_display हिस्सा है, यह कहते हैं: एक स्ट्रिंग मॉडल पर एक विशेषता का प्रतिनिधित्व। यह लगभग कॉल करने योग्य के समान व्यवहार करता है, लेकिन इस संदर्भ में स्वयं मॉडल उदाहरण है।

class Person(models.Model): 
    first_name = models.CharField(max_length=50) 
    last_name = models.CharField(max_length=50) 
    color_code = models.CharField(max_length=6) 

def colored_name(self): 
    return '<span style="color: #%s;">%s %s</span>' % (self.color_code, self.first_name, self.last_name) 
colored_name.allow_tags = True 

class PersonAdmin(admin.ModelAdmin): 
    list_display = ('first_name', 'last_name', 'colored_name') 

तो मुझे लगता है कि, अगर आप

class PersonAdmin(admin.ModelAdmin): 
    list_display = ('first_name', 'last_name', 'colored_name', 'profile_link') 

तो फिर तुम किया

+0

वाह धन्यवाद, जो कि काफी उपयोगी था। फिर से धन्यवाद – Hamza

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