Начальная информация:
У меня есть 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))
Имеет 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») в качестве имени подпапки. Это нужно для настраиваемого дублирующего действия, чтобы файлы с одинаковыми именами не перезаписывали друг друга.
Основная проблема: Я не могу получить Page
атрибут объекта внутри PageView
, чтобы использовать его в пути. Я могу получить его в некоторых методах Flask-Admin, например, on_model_change
, так что я могу перемещать / удалять файлы вручную после каждого изменения модели, но это действительно неуместно.
Вопрос : Итак, есть ли способ использовать атрибут объекта внутри ModelView
? Что-то вроде __init__ super()
и так далее вполне приемлемо:)