初始信息:
我在ReportViewer1.Reset();
ReportViewer1.Visible = true;
ReportViewer1.EnableTelemetry = false;
ReportViewer1.ShowParameterPrompts = true;
ReportViewer1.ProcessingMode = ProcessingMode.Local;
ReportViewer1.LocalReport.ReportPath = Server.MapPath($"~/Reports/{_reportName}");
foreach (var param in ReportParameters.Where(r => r.Hidden))
ReportViewer1.LocalReport.SetParameters(new ReportParameter(param.Name, param.DefaultValue));
foreach (var dataset in DataSets)
ReportViewer1.LocalReport.DataSources.Add(new ReportDataSource(dataset, GetReportData(dataset)));
ReportViewer1.LocalReport.Refresh();
中拥有Page
模型:
SQLAlchemy
它具有class Page(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128), index=True, nullable=False)
url = db.Column(db.String(128), default="", nullable=False, unique=True)
main_image = db.Column(db.Unicode(128))
的{{1}}(来自PageView
的{{1}}):
ModelView
我想要的内容:使用页面网址(例如“ about”或“ samsung-galaxy-7”)作为子文件夹名称,将图像保存在每个页面的不同子文件夹中。需要使用它来执行自定义重复操作,因此具有相同名称的文件不会相互覆盖。
主要问题:我无法在Flask-Admin
内获取ImageUploadField
对象属性以在路径中使用它。我可以在诸如class PageView(ModelView):
form_extra_fields = {
'main_image': form.ImageUploadField(
'Main image',
base_path=file_path,
relative_path='product_images/{}/'.format(models.Page.url),
thumbnail_size=(100, 100, True),
)}
from app import models
之类的Flask-Admin方法中获取它,以便在每次更改模型后都可以手动移动/删除文件,但这确实很不合常规。
问题:那么,有什么方法可以在Page
中使用对象属性?像PageView
之类的东西是完全可以接受的:)
答案 0 :(得分:0)
解决了ImageUploadField.namegen
(docs)。我决定不创建子目录,而是向所有页面图像添加url前缀:
def add_url_to_name(obj, file_data):
parts = op.splitext(file_data.filename)
return '{}_{}{}'.format(obj.url, parts[0], parts[1])
form_extra_fields = {
'main_image': form.ImageUploadField(
'Main image',
base_path=file_path,
relative_path='product_images/',
thumbnail_size=(100, 100, True),
namegen=add_url_to_name,
)
}