django - 在管理员的 __str__ 方法中显示缩略图
问题描述
我有一个Image
模型,我通常在__str__
方法中显示文件名。我想改为显示图像的缩略图。
这是我的模型:
class Image(models.Model):
image = models.ImageField(upload_to='images/')
def filename(self):
return basename(self.image.name)
def __str__(self):
return self.filename()
解决方案
您需要修改 àadmin.py' 而不是models.py
. 执行以下代码。
在你的models.py
class Image(models.Model):
image = models.ImageField(upload_to="images/")
在你的admin.py
from PIL import Image
from django.contrib import admin
from django.utils.safestring import mark_safe
class ImageAdmin(admin.ModelAdmin):
list_display = [
"thumbnail", "name"
]
list_display_links = [
"thumbnail"
]
readonly_fields = [
"thumbnail", "name"
]
fieldsets = [
("Details", {
"fields": ("name", ("image", "thumbnail"))
}),
]
def thumbnail(self, obj):
if obj.image:
return mark_safe(
'<img src="/media/{url}" width="75" height="auto" >'.format(
url=obj.image.url.split("/media/")[-1])
)
def name(self, obj):
name = obj.image.name
return name.replace('images/', '')
下面,您可以在管理员中看到结果。
推荐阅读
- javascript - Keycloak 返回 CORS Access-Control-Allow-Origin 错误
- c# - 将字符串转换为日期时间,以处理 c# 中所有不同格式的 excel 和 csv
- html - 保留父菜单切换 Jquery
- mysql - MySQL 数据库到 BigQuery 的传输
- docker - 错误:对于 odoo-13-docker-compose_odoo13_1 需要一个类似字节的对象,而不是 docker-compose up 中的“str”
- javascript - 在 Node.js 中比较两个大文件的最佳实践
- python - 随机播放列表的副本
- package - Julia 中的“检测到包无法满足的要求”
- c - 在我的代码中使用 %c 后如何在同一行上?
- c# - 我想检查列表中的项目是否是有效的指导。如果无效,则将字符串替换为 Guid 默认值