Python Flask管理员:如何在ModelView中获取模型对象属性?

Python Flask管理员:如何在ModelView中获取模型对象属性?,python,flask,flask-sqlalchemy,flask-admin,Python,Flask,Flask Sqlalchemy,Flask Admin,初始信息: 我在SQLAlchemy中有Page模型: 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

初始信息:

我在
SQLAlchemy
中有
Page
模型:

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))
它具有
PageView
ModelView
来自
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
我想要的:使用页面url(如“about”或“samsung-galaxy-7”)作为子文件夹名称,将每个页面的图像保存在不同的子文件夹中。自定义复制操作需要它,因此同名文件不会相互覆盖

主要问题:我无法在
PageView
中获取
Page
对象属性以在路径中使用它。我可以在一些Flask管理方法中使用它,比如在模型更改中使用
,这样我就可以在每次模型更改后手动移动/删除文件,但感觉真的很不和谐


问题:那么,有没有办法在
ModelView
中使用object属性?Smth如
\uuuu init\uuuuu super()
等完全可以接受:)

通过
ImageUploadField.namegen解决。我决定不创建子目录,而是向所有页面图像添加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,
    )
}