这是一个新手的问题,但是我如何在Django的默认管理中显示一个图片的缩略图,而不是显示该图片的路径呢?
Models.py
from django.db import models
class Project(models.Model):
name = models.CharField(max_length=200)
description = models.CharField(max_length=500)
thumbnail = models.ImageField(upload_to="media")
def __str__(self):
return self.name
class Image(models.Model):
project = models.ForeignKey(Project)
title = models.CharField(max_length=200)
image = models.ImageField(upload_to="media")
pub_date = models.DateTimeField('date published')
def admin_thumbnail(self):
return u'<img src="%s" />' % (self.image.url)
admin_thumbnail.short_description = 'Thumbnail'
admin_thumbnail.allow_tags = True
Admin.py
from .models import Project, Image
class ImageInline(admin.TabularInline):
model = Image
extra = 0
class ImageAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['project']}),
(None, {'fields': ['title']}),
(None, {'fields': ['image']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
class ProjectAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['name']}),
(None, {'fields': ['thumbnail']}),
]
inlines = [ImageInline]
search_fields = ["name"]
admin.site.register(Project, ProjectAdmin)
admin.site.register(Image, ImageAdmin)
我不知道是否有一个更简单的方法来做这件事或没有,但无论答案将工作。谢谢!
2条答案
按热度按时间cotxawn71#
您可以使用此方法,将此方法添加到具有图像的模型中:
然后在
admin.py
中这样调用它:对于面向对象编程,可以创建一个父模型,并从父模型中扩展出其他具有镜像的模型,然后在父类上定义该方法
rks48beu2#
在保存表单或上传原始图像时,单独创建缩略图,因此模型只引用原始图像。
在www.example.com中views.py定义以下过滤器。currency.front_image是一个models.ImageField。
在html中按如下所示操作。