Как обработать ошибку FileNotFound при использовании тега img с помощью mark_safe в django admin

Я импортирую изображения в AWS S3 с помощью django-storages. Однако, если у администратора Django нет соответствующего изображения в S3, администратор хотел бы выдать ошибку FileNotFoundError, чтобы исправить объект S3BotoStorage или исправить основную проблему для обработки ошибки.

admin/hospital.py

class HospitalAdmin(OrderedInlineModelAdminMixin, IdFieldIncludedModelAdmin):
    list_display = ("name", "tags_comma_separated", "created_at")
    list_display_links = ("name",)
    list_filter = [TagFilter]
    fieldsets = (
        (None, {"fields": ("user",)}),
        (
            None,
            {
                "fields": (
                    "logo_image",
                    "logo_image_width",
                    "logo_image_height",
                    "logo_image_preview",
                    "name",
                    "description",
                    "address",
                    "longitude",
                    "latitude",
                    "near_station_name",
                    "phone_number",
                    "sms_phone_number",
                )
            },
        ),
        (
            None,
            {
                "fields": (
                    "created_at",
                    "updated_at",
                )
            },
        ),
    )
    readonly_fields = [
        "logo_image_width",
        "logo_image_height",
        "logo_image_preview",
        "created_at",
        "updated_at",
    ]
    
    ...

    # FileNotFound Error occurs in the lower part
    @display(description="preview log image")
    def logo_image_preview(self, obj):
        return mark_safe(
            '<img src="{url}" width="{width}" height="{height}" />'.format(
                url=obj.logo_image.url,
                width=obj.logo_image.width,
                height=obj.logo_image.height,
            )
        )

Я добавил оператор try/except к части ошибки, чтобы сгенерировать корректную ошибку, но это, похоже, не решает фундаментальную проблему

try:
            return mark_safe(
                '<img src="{url}" width="{width}" height="{height}" />'.format(
                    url=obj.logo_image.url,
                    width=obj.logo_image.width,
                    height=obj.logo_image.height,
                )
            )

        except FileNotFoundError as e:
            return str(e)
Вернуться на верх