Django 子类化sorl thumbnail`ThumbnailBackend`类,并重写_get_thumbnail_filename不起作用
我打算从Django 子类化sorl thumbnail`ThumbnailBackend`类,并重写_get_thumbnail_filename不起作用,django,inheritance,sorl-thumbnail,overriding,Django,Inheritance,Sorl Thumbnail,Overriding,我打算从sorl.thumbnail.base中对ThumbnailBackend类进行子类化。我需要做的是重写\u get\u thumbnail\u filename方法,向原始(父)方法生成的文件名添加一些内容。为此,我写了如下内容: from sorl.thumbnail.base import ThumbnailBackend class MyThumbnailBackend(ThumbnailBackend): def _get_thumbnail_filename(sel
sorl.thumbnail.base
中对ThumbnailBackend
类进行子类化。我需要做的是重写\u get\u thumbnail\u filename
方法,向原始(父)方法生成的文件名添加一些内容。为此,我写了如下内容:
from sorl.thumbnail.base import ThumbnailBackend
class MyThumbnailBackend(ThumbnailBackend):
def _get_thumbnail_filename(self, source, geometry_string, options):
oldpath = super(ThumbnailBackend,self)._get_thumbnail_filename(source, geometry_string, options)
oldpathlist = oldpath.split('/')
# get the last item of 'oldpathlist' and
# sufix it with useful info...
# join the items with the modified one...
return newpath
python继承应该缺少一些东西,因为我一直遇到以下错误:
AttributeError at /location/of/the/caller/class/
'super' object has no attribute '_get_thumbnail_filename'
如果我是对的,我将在第一行导入:from sorl.thumbnail.base import ThumbnailBackend
,它肯定有一个\u get\u thumbnail\u filename
方法
我做错了什么
多谢各位 您必须使用当前类调用super,将
super(ThumbnailBackend,self)
更改为super(MyThumbnailBackend,self)
,如下所示
class MyThumbnailBackend(ThumbnailBackend):
def _get_thumbnail_filename(self, source, geometry_string, options):
return super(MyThumbnailBackend, self)._get_thumbnail_filename(source, geometry_string, options)