一个django应用程序,用于管理列表视图和表单中的干缩略图。
django-admin-thumbnails的Python项目详细描述
django管理缩略图
一个django应用程序,可以帮助您以一种干巴巴的方式将模型的图像字段的缩略图添加到管理列表视图和表单中。
基本原理
当使用包含ImageField
s、FileField
s或使用easy_thumbnails
中的ThumbnailerImageField
的模型时,通常需要在管理窗体、字段集或列表视图中包含字段的缩略图预览。各种方法来实现这一点,但似乎都涉及到一定程度的重复。这些年来,我尝试了一些尝试来干掉这些代码,这个库代表了我最近的解决方案。所以,请享受!
安装
$ pip install django-admin-thumbnails
用法
应用程序会将字段添加到ModelAdmin
或*Inline
类中;每个要显示的缩略图都有一个字段。它们被附加到类的readonly_fields
元组中(除非您另有指定),因此它们将显示在管理窗体的底部,或者您可以按名称将它们包含在fieldsets
或list_display
定义中。
django-admin-thumbnails
将处理ImageField
、FileField
(例如,您可以使用svg)和(如果安装了easy_thumbnails
)ThumbnailerImageField
。在后一种情况下,将使用缩略图别名,您可以在“设置”中指定该别名。
要创建管理缩略图字段,请修饰您的ModelAdmin
或*Inline
类,并可以选择指定如何处理新创建的字段。
假设模型如下:
classPerson(models.Model):name=models.CharField('Name',max_length=100)image=models.ImageField('Image')# ...
在最简单的用例中,要将缩略图字段添加到管理表单的底部,只需修饰ModelAdmin
或*Inline
类(decorators的顺序很重要),提供将从中获取缩略图的字段的名称:
importadmin_thumbnails@admin.register(models.Person)@admin_thumbnails.thumbnail('image')classPersonAdmin(admin.ModelAdmin):pass
这将向您的ModelAdmin
或*Inline
定义中添加一个名为image_thumbnail
(FOO_thumbnail
,其中FOO
是原始字段的名称)。若要重写给定给新字段的标题,请将第二个字符串参数传递给装饰符:
@admin_thumbnails.thumbnail('image','Thumbnail')
要将缩略图添加到模型列表视图中显示的列,请将新字段名添加到list_display
:
@admin.register(models.Person)@admin_thumbnails.thumbnail('image')classPersonAdmin(admin.ModelAdmin):list_display=('name','image_thumbnail')
或者将其包含在您的fieldsets
中类似地:
@admin.register(models.Person)@admin_thumbnails.thumbnail('image')classPersonAdmin(admin.ModelAdmin):fieldsets=((None,{'fields':('name','image_thumbnail'),}),)
默认情况下,新字段将附加到readonly_fields
元组–如果这是不需要的(例如,如果希望在列表视图中包含缩略图,但在默认表单字段中不包含,请将append=False
传递给装饰器:
@admin.register(models.Person)@admin_thumbnails.thumbnail('image',append=False)classPersonAdmin(admin.ModelAdmin):list_display=('name','image_thumbnail')
如果您使用的是fieldsets
,这是不必要的,因为这样做可以控制缩略图字段的包含(或省略)和位置。
如果您的字段包含设计为在深色背景上显示的图像,则可以向装饰器提供background=True
,以便在显示时(通过css)将图像添加到缩略图中:
@admin_thumbnails.thumbnail('image',background=True)
如果您正在使用easy_thumbnails
并希望覆盖用于按字段生成缩略图的别名(而不是使用ADMIN_THUMBNAIL_THUMBNAIL_ALIAS
设置;请参见下面的内容),则可以对装饰器使用alias
参数:
@admin_thumbnails.thumbnail('image',alias='admin_thumbnail_alternative')
配置
ADMIN_THUMBNAIL_DEFAULT_LABEL
默认值:'Preview'
设置此选项将覆盖缩略图使用的默认列名/标题。
ADMIN_THUMBNAIL_FIELD_SUFFIX
默认值:'_thumbnail'
设置此选项将覆盖新创建的缩略图字段的后缀。如果您与要使用的其他字段名有冲突问题,请更改。不要忘记根据需要更新list_display
和/或fieldsets
中的ModelAdmin
。
ADMIN_THUMBNAIL_THUMBNAIL_ALIAS
默认值:'admin_thumbnail'
如果easy_thumbnails
已安装并可用,则使用ThumbnailerImageField
的任何模型字段将使用名为admin_thumbnail
的缩略图别名(如果已定义)调整大小。您可以在设置中定义此别名(有关easy_thumbnails
文档here的详细信息),也可以提供其他别名作为此设置的值。
ADMIN_THUMBNAIL_STYLE
默认值:{'display': 'block', 'width': '100px', 'height': 'auto'}
将添加到任何缩略图imag的style
属性的css属性/值对字典在管理员中输出时。覆盖以提供您自己的样式。
ADMIN_THUMBNAIL_BACKGROUND_STYLE
默认值:{'background': '#000'}
使用background=True
选项时添加的css属性/值对字典(请参阅上面的用法)。覆盖以提供您自己的样式。注意,除了在ADMIN_THUMBNAIL_STYLE
中定义的任何样式之外,这些样式还使用。
开发安装
如果在本地处理包,则可以通过pip
:
$ pip install -e .[dev]
用flake8
:
$ flake8
问题、建议、贡献
…欢迎使用Github。感谢您对django-admin-thumbnails
的兴趣!