#django #django-forms #django-admin
Вопрос:
во-первых, у меня возникли проблемы с отображением миниатюр в Django-admin, я попробовал приведенный ниже код, но, похоже, он не работает,
class Pictures(models.Model):
image = models.ImageField(null=True)
date_added = models.DateField(auto_now_add=True)
organization = models.ForeignKey(Organisation,on_delete=models.CASCADE)
def __unicode__(self):
return f"{self}"
@mark_safe
def image_img(self):
if self.image:
return format_html('<img src="{0}" style="width: 60px; height:65px;" />'.format(self.image.url))
else:
return format_html('<img src="" alt={0} style="width: 60px; height:65px;" />'.format("noimagefound"))
image_img.short_description = 'Image'
image_img.allow_tags = True
class PicturesAdmin(admin.ModelAdmin):
list_display = ('image', 'date_added','image_img')
autocomplete_fields = ['organization']
list_display_links = ('date_added',)
Я также хочу отобразить эти миниатюры в макете сетки, как я могу добиться этого любым простым подходом
Комментарии:
1. вам не нужен юникод , если вы используете python3, вместо этого используйте str .
2. а также для поля изображения null=True страшно, вместо этого используйте просто пробел=True.
Ответ №1:
models.py
from django.utils.safestring import mark_safe
class Pictures(models.Model):
image = models.ImageField(blank=True,upload_to="pictures/")
date_added = models.DateField(auto_now_add=True)
organization = models.ForeignKey(Organisation,on_delete=models.CASCADE)
def __str__(self):
return f"{self.pk}"
def image_img(self):
if self.image:
return mark_safe('<img src="%s" style="width: 60px; height:65px;" />' % self.image.url )
else:
return mark_safe('<img src="" alt="%s" style="width: 60px; height:65px;" />' % "noimagefound")
image_img.short_description = 'Image'
Комментарии:
1. я изменил его на маркировку безопасный, но все тот же
2. @AtifShafi я отредактировал свой ответ. сначала добавьте пробел=True,а также upload_to и python manage.py эмиграции и python manage.py мигрируйте.и я немного изменил свой image_img.
3. я внес все изменения, но они по-прежнему показывают то же самое
4. @AtifShafi тогда вам нужно загрузить новые изображения, потому что вы уже изменили путь к изображениям при использовании upload_to=»картинки/».загрузите новые изображения, и это должно сработать.
5. @AtifShafi не забудьте импортировать mark_safe и заменить «{}» на «%s», как я сделал выше.
Ответ №2:
Я думаю, ты format_html
неправильно понял роль
@mark_safe
def image_img(self):
if self.image:
return format_html('<img src="{}" style="width: 60px; height:65px" />', self.image.url)
else:
return format_html('<img src="" alt="{}" style="width: 60px; height:65px" />', "noimagefound")
Комментарии:
1. я приму ответ , как только проблема будет устранена, никаких проблем