Я не могу отобразить изображение на странице администратора Django

У меня проблемы с отображением изображений на странице администратора Djnago.

я прочитал https://stackoverflow.com/questions/2443752/how-to-display-uploaded-images-in-change-list-page-in-django-admin/51181825#51181825 эту статью, но так и не получил то, что хотел :(

)

это мои коды

models.py

from django.contrib.auth.models import (
    BaseUserManager, AbstractBaseUser, PermissionsMixin
)
from django.db import models
from django.utils.html import mark_safe


class User(AbstractBaseUser, PermissionsMixin):
    image = models.ImageField(
        upload_to='media/profile_image/',
        null=True
    )


admin.py

class UserAdmin(BaseUserAdmin):
    # The forms to add and change user instances
    form = UserChangeForm
    add_form = UserCreationForm

    def image_tag(self, obj): # Here
        return format_html(
            f'''<a href="{obj.image.url}" target="_blank">
                  <img 
                    src="{obj.image.url}" alt="{obj.image}" 
                    width="50" height="50"
                    style="object-fit: cover;"
                  />
                </a>''')


    list_display = ('uid','get_full_name', 'email', 'nickname', 'introduce','image', 'birth','is_active', 'is_superuser', 'date_joined', 'image_tag')

...

вот что я получил

admin page

изображение находится в моем PROJECTNAME/media/profile_image, но я не могу отобразить его на моей странице администратора :(

)

Проблема может быть связана с настройками вашего проекта или с тем, как вы определяете отображение изображений в вашем файле admin.py.

Пожалуйста, проверьте следующее:

  1. Убедитесь, что в файле settings.py правильно установлены MEDIA_URL и MEDIA_ROOT.

    .
  2. Проверьте, что файл изображения читается сервером, перейдя к URL-адресу изображения в браузере.

  3. Если вы используете ведро S3 для хранения изображений, проверьте, что ведро настроено правильно и что пользователь IAM имеет правильные разрешения.

  4. В методе image_tag вы используете obj.image, который является экземпляром

    .
  5. ImageField, вам следует использовать obj.image.url

    .
  6. Также проверьте метод image_tag. Функция format_html используется для вывода безопасного HTML, поэтому строка f'' является ненужной и может быть удалена.

  7. Наконец, убедитесь, что метод image_tag передается в качестве атрибута кортежу list_display в классе UserAdmin.

Хотя, если вы предоставите дополнительный код из настроек и дополнительные детали или журналы ошибок. Возможно, мы сможем помочь вам с конкретным решением.

Я решил проблему, добавив

if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

это в моем urls.py

Простите за вопрос, который я мог бы решить сам, но я оставлю это для тех, у кого может быть такая же проблема... спасибо

Вернуться на верх