2010-03-14 14 views
24

मैंने एक मॉडल परिभाषित किया है जिसमें एक छवि एक लिंक है। मॉडल आइटम सूची में छवि को प्रदर्शित करने का कोई तरीका है? मेरा मॉडल इस तरह दिखता है:Django: व्यवस्थापक इंटरफ़ेस में छवि प्रदर्शित करें

class Article(models.Model): 
    url = models.CharField(max_length = 200, unique = True) 
    title = models.CharField(max_length = 500) 
    img = models.CharField(max_length = 100) # Contains path to image 

    def __unicode__(self): 
     return u"%s" %title 

क्या शीर्षक के साथ छवि को प्रदर्शित करने का कोई तरीका है?

उत्तर

57

आप किसी अन्य नाम के साथ एक मॉडल इंस्टेंस विधि बना सकते हैं, एचटीएमएल टैग को इसके आउटपुट के लिए अनुमति दें और इस विधि को सूची फ़ील्ड के रूप में जोड़ें। Django

class ArticleAdmin(admin.ModelAdmin):  
    ... 
    list_display = ('url', 'title', 'admin_image') 
+0

एक समस्या मिली। \t प्राप्त अनुरोध URL:: आप एक बार देख कृपया/व्यवस्थापक/ 'MediaDefiningClass' वस्तु पर लेखन त्रुटि ले सकता है iterable अनुरोध विधि नहीं है \t http://127.0.0.1:8000/admin/ अपवाद प्रकार: \t लेखन त्रुटि अपवाद मान: \t 'MediaDefiningClass' वस्तु iterable नहीं है –

+1

असल में पिछले एक तय, अब यह है: 'admin_img' नहीं एक प्रतिदेय या की .... –

+0

ठीक एक विशेषता है, अनदेखा करें .. टाइपो –

0

आप अपने मॉडल के लिए django व्यवस्थापक दृश्य को ओवरराइट कर सकते हैं। अधिक जानकारी के लिए http://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-admin-templates देखें।

संक्षेप में आपको एक टेम्पलेट बनाने की आवश्यकता है: टेम्पलेट्स/व्यवस्थापक/your_app/article/change_form.html और छवि को प्रदर्शित करने के लिए HTML जोड़ें।

0

http://www.djangosnippets.org/snippets/239/

वहाँ कि, प्लस, अगर आप आप केवल पढ़ने के क्षेत्रों के साथ ऊपर गठजोड़ कर सकते हैं 1.2 का उपयोग कर रहे हैं।

1

(मैं उपयोग कर रहा हूँ:

class Article(models.Model): 
    ... 
    def admin_image(self): 
     return '<img src="%s"/>' % self.img 
    admin_image.allow_tags = True 

तब सूची में इस पद्धति जोड़ें:

पहले छवि शामिल करने के लिए एचटीएमएल लौटने एक नई पद्धति जोड़ें: यहाँ एक उदाहरण है 1.5) स्वीकार्य उत्तर में दिए गए चरणों का पालन करने के अलावा, मुझे छवि टैग को "सुरक्षित"

ऐसा करने के लिए, वापसी मूल्य w को लपेटना पड़ा django.utils.safestring पैकेज के mark_safe विधि के साथ।

कोड उदाहरण: https://stackoverflow.com/a/14075441/1063031

Django डॉक्स: https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#filters-and-auto-escaping

11
def image_tag(self, obj): 
    return u'<img src="%s" />' % obj.image 

image_tag.short_description = 'Image' 
image_tag.allow_tags = True 

और अपने admin.py ऐड में:

readonly_fields = ('image_tag',) 
3

आप भी व्यवस्थापक में सीधे छवि जोड़ सकते हैं

class ArticleAdmin(admin.ModelAdmin): 

    def admin_image(self, obj):      
     return '<img src="%s"/>' % obj.img 
    admin_image.allow_tags = True 

    list_display = ('url', 'title', 'admin_image') 
+0

आर्किटेक्चर के लिए बेहतर समाधान का उपयोग करें। – SolessChong

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