我有最困难的时间试图自定义烧瓶管理,以改变我的管理视图缩略图的名称。我一直在寻找如何做到这一点,我认为答案在ImageUploadField的namegen和thumbgen属性中,但我不确定。有人能帮忙吗?这就是我要做的。在
第一步:
这是我为管理视图生成的模型。它是一个有字段的雇员。在
class Employee(db.Model):
__tablename__ = 'employees'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(200))
title = db.Column(db.String(200))
email = db.Column(db.String(200))
department = db.Column(db.String(200))
path = db.Column(db.String(300))
def __init__(self, name='', title='', email='', department='', path=''):
self.name = name
self.title = title
self.email = email
self.department = department
self.path = path
def __repr__(self):
return '<Employee %r>' % self.name
admin.add_view(EmployeeView(Employee, db.session))
第二步:
对于这个步骤,用户通过表单上传员工的上传信息。当他们按下submit时,会出现一些自定义代码,这将导致第3步。在
第三步:
我有一个listens_for
回调函数,它使用它们提供的映像的名称并将文件名更改为雇员的名称。
例如,如果我上传一个名为我.jpg,此文件将更改为Daniel卢比奥.jpg并将作为Daniel Rubio存储在员工的路径字段中。代码如下:
此外,此代码将重命名我.jpg在我的static/images/folder给Daniel卢比奥.jpg静态/图像/
第四步:
接下来,我使用Flask Admin从示例代码中获取此代码,以显示我的模型及其关联的图像。代码如下:
class EmployeeView(ModelView):
def _list_thumbnail(view, context, model, name):
if not model.path:
return ''
return Markup('<img src="%s">' % url_for('static',
filename= 'images/' + form.thumbgen_filename(model.path)))
column_formatters = {
'path': _list_thumbnail
}
form_extra_fields = {
'path': form.ImageUploadField('Image', base_path=file_path, thumbnail_size=(100, 100, True))
}
def is_accessible(self):
return flask_login.current_user.is_authenticated
我把所有的东西都连接起来,这样图像就可以在需要的任何地方正确命名,除了在我的“static/images”文件夹中。在我通过Flask admin提交员工后,我的我.jpg产生一个我_拇指.jpg而不是丹尼尔·鲁比奥_拇指.jpg. 我一辈子都不知道如何定制这个,这样就不会再发生这种事了。我很确定在这里找到的ImageUploadField中会发生这种情况Flask-Admin ImageUploadField,但是我不能让它工作。我该怎么做才能让这个工作起来?我们将不胜感激。在
修复尝试#1
重写ImageUploadField
class ImageOverride(form.ImageUploadField('Image', base_path=file_path, thumbnail_size=(100, 100, True))):
def __init__(self, thumbgen=None):
self.thumbgen=self.path
class EmployeeView(ModelView):
def _list_thumbnail(view, context, model, name):
if not model.path:
return ''
return Markup('<img src="%s">' % url_for('static',
filename= 'images/' + form.thumbgen_filename(model.path)))
column_formatters = {
'path': _list_thumbnail
}
form_extra_fields = {
'path': ImageOverride()
}
def is_accessible(self):
return flask_login.current_user.is_authenticated
结果:
Error: `TypeError: 'UnboundField' object is not callable`
最后,我不得不绕开乔斯的建议,而是想出了这个解决方案:
相关问题 更多 >
编程相关推荐