Login

Simple admin list thumbnail view

Author:
robharvey
Posted:
April 8, 2007
Language:
Python
Version:
.96
Tags:
image admin
Score:
6 (after 6 ratings)

This is a very simple way to display images within the admin list view. It is not efficient in the sense that the images are being downloaded in original format, however for cases where the images are not regularly accessed it may be a straightforward option. Can also be tied into WYSIWYG editors like TinyMCE by adding an appropriate href link in the return value.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
    def thumbnail(self):
        """
        Display thumbnail-size image of ImageField named src
        Assumes images are not very large (i.e. no manipulation of the image is done on backend)
        Requires constant named MAX_THUMB_LENGTH to limit longest axis
        """
        max_img_length = max(self.get_src_width(), self.get_src_height())
        ratio = max_img_length > MAX_THUMB_LENGTH and float(max_img_length) / MAX_THUMB_LENGTH or 1
        thumb_width = self.get_src_width() / ratio
        thumb_height = self.get_src_height() / ratio
        url = '%s%s' % (settings.ADMIN_MEDIA_PREFIX, self.get_src_url())
        return '<img src="%s" width="%s" height="%s"/>' % (url, thumb_width, thumb_height)
    thumbnail.short_description = 'Image thumbnail'
    thumbnail.allow_tags = True

    class Admin:
        list_display = ('src', 'thumbnail',)

More like this

  1. Admin list thumbnail by theetderks 8 years, 1 month ago
  2. Simple random file CAPTCHA by jeverling 3 years, 3 months ago
  3. Image Preview on ImageField in admin by fyaconiello 4 years, 2 months ago
  4. Easy file upload handler by mattdw 6 years, 10 months ago
  5. simple text image view by derelm 8 years, 3 months ago

Comments

robharvey (on April 17, 2007):

Updated the "ratio" field so that it only changes the image size when it is above the MAX_THUMB_LENGTH.

#

danfreak (on March 19, 2009):

Hey robharvey,

cheers for the snippet!

I'm a django-beginner could you please provide a small example about using this snippet?

Dan

#

Please login first before commenting.