import django_tables2 as tables from django_tables2.utils import A from .models import Long from django.utils.html import format_html from easy_thumbnails.files import get_thumbnailer from easy_thumbnails.exceptions import InvalidImageFormatError class ImageColumn(tables.Column): def render(self, value): obj = value.first() if obj is None: return format_html('No image') image_object = obj.image try: thumbnailer = get_thumbnailer(image_object) return format_html('', thumbnailer["exam-list"]) except InvalidImageFormatError: return format_html('Invalid image url', image_object) class LongTable(tables.Table): edit = tables.LinkColumn('longs:long_update', text='Edit', args=[A('pk')], orderable=False) view = tables.LinkColumn('longs:long_detail', text='View', args=[A('pk')], orderable=False) clone = tables.LinkColumn('longs:long_clone', text='Clone', args=[A('pk')], orderable=False) images = ImageColumn("images", orderable=False) class Meta: model = Long template_name = "django_tables2/bootstrap4.html" fields = ("normal", "abnormality", "region", "examination", "laterality", "site", "created_date", "author") sequence = ("view", "images")