访问模型视图类内部的模型属性

2024-02-05

如果这是一个愚蠢的问题,请提前抱歉,但我仍然有点困惑。阅读 Flask 管理文档尚未给出任何结果。

在这个例子中Flask admin 图片上传示例 https://github.com/flask-admin/flask-admin/blob/master/examples/forms/app.py有一个名为 ImageView 的自定义 ModelView:

class ImageView(sqla.ModelView):
    def _list_thumbnail(view, context, model, name):
        if not model.path:
            return ''

        return Markup('<img src="%s">' % url_for('static',
                                                 filename=form.thumbgen_filename(model.path)))

    column_formatters = {
        'path': _list_thumbnail
    }

    # Alternative way to contribute field is to override it completely.
    # In this case, Flask-Admin won't attempt to merge various parameters for the field.
    form_extra_fields = {
        'path': form.ImageUploadField('Image',
                                      base_path=file_path,
                                      thumbnail_size=(100, 100, True))
    }

In the _list_thumbnail(view, context, model, name)有参数模型。在这个方法内部我可以访问模型的属性。

我的问题是如何在外部访问模型及其属性_list_thumbnail(view, context, model, name)方法但在 ImageView 内部?

Thanks


将模型数据传递到视图中定义的字段可能会很痛苦。但幸运的是文件上传字段 http://flask-admin.readthedocs.io/en/latest/api/mod_form_upload/#flask_admin.form.upload.FileUploadField及其子类可以得到namegen用于生成名称作为参数的函数。它接收“脏”模型对象作为参数:

def name_generator(obj, file_data):
    return 'file_%d.png' % obj.id

class ImageView(sqla.ModelView):
    form_extra_fields = {
        'path': form.ImageUploadField('Image',
                                      base_path=file_path,
                                      namegen=name_generator,
                                      thumbnail_size=(100, 100, True))
    }

我还发现生成的文件名可能包含文件的路径,而不仅仅是文件名。

Update:正如 @stamaimer 发现的那样,此方法对于数据库中尚不存在的对象无法正常工作,因为它们还没有 ID。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

访问模型视图类内部的模型属性 的相关文章

随机推荐

  • C 预处理器可以执行简单的字符串操作吗?

    This is C宏观怪异问题 是否可以编写一个宏 以字符串常量 X 作为参数 并求值为相同长度的字符串 Y 使得 Y 的每个字符都是 X 对应字符的 常量 算术表达式 这是不可能的 对吧 不 C 预处理器将字符串文字视为单个标记 因此它无
  • 如何在 Outlook 2016 中查看电子邮件的 HTML 源代码 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我想在outlook 2016中查看一封电子邮件的html源代码 它似乎与以前版本的outlook有所不同 我正在运行 Outlook 2
  • 我的应用程序屏幕出现在浏览器中

    我在 Android 上打开浏览器 opera 或 firefox 并在地址栏上写下我的深层链接 当我按浏览器上的 Go 按钮时 它会按预期将我重定向到 我的应用程序 但问题是我的应用程序出现在浏览器上 如图所示 我如何打开我的应用程序并随
  • 相对于光标滚动 Vim,自定义映射

    所以我读过 help scroll cursor真的很喜欢zz 这会将光标所在的行置于窗口中间 我正在寻求帮助来制作一个类似于以下内容的映射zz但将光标所在的行放在窗口高度的 20 或 25 30 等 处 Edit 感谢 ZyX 和 Dra
  • 计算机图形学编程中的翻页是什么意思?

    翻页是什么意思 为什么我们在图形编程中需要它 页面翻转是一种简单的硬件辅助技术 可实现无闪烁图形 已经使用了数十年 它需要硬件的支持 视频子系统必须至少有两个内存区域 页 可能是可见的 其中任何时候都只有一个可见 给定的时刻 视频子系统支持
  • 检查您是否已在 Game Center/GameKit 中解锁成就

    我已经被这个问题困扰了很长一段时间 我了解如何解锁游戏中心的成就 甚至让整个消息系统正常工作 但我不知道如何检查成就是否已解锁 显然这不起作用 GKAchievement achievement GKachievement alloc in
  • 如何在 React 中为嵌套形状提供默认属性?

    React 有没有办法为特定形状的嵌套数组提供默认属性 鉴于下面的示例 可以看到我的第一次尝试 但这并没有按预期工作 static propTypes heading PT string items PT arrayOf PT shape
  • 在 Ubuntu 上安装并启动 H2 数据库

    我想在 Ubuntu 12 10 上使用 H2 数据库 并访问该网站并获取了与平台无关的安装文件 安装说明非常字面意思 要安装软件 请运行安装程序或将其解压缩到您选择的目录 我不是 Linux 新手 所以我以前使用过许多常用的安装过程 但我
  • 如何在原生 Android 应用程序中渲染 epub 文件?

    我正在尝试制作一个 Android 应用程序 它将呈现 epub 文件并在 Android 布局中显示其内容 我做了一个类似的应用程序 使用 pdfRenderer 显示 pdf 它使用位图显示 pdf 页面 如何在 android 中使用
  • ImportError:PyCapsule_Import 无法导入模块“pyexpat”

    我正在使用 Jenkins 构建一个 python Flask 解决方案以部署到 Google App Engine 作为构建过程的一部分 我运行了一些集成测试 其中之一因以下错误而失败 ERROR Failure ImportError
  • 仅在 NavigationView 中为指定图标禁用色调

    I need to disable a tint color for some icons in NavigationView because their color define category type How can I do it
  • TypeScript 中的“EventTarget”上不存在属性“value”

    使用 React 的 TypeScript 中的以下代码输出以下错误 类型 EventTarget 上不存在属性 value import React Component from react class InputForm extends
  • Cordova 模拟 android 退出代码 1

    我有通过科尔多瓦成功构建的代码 但是 当我尝试模拟它时 我收到此错误 错误 cmd 命令失败 退出代码为 1 有想法该怎么解决这个吗 这是我尝试模拟代码的输出 https i stack imgur com 7LqiN png 我有同样的问
  • JanusGraph:从 EC2 访问 Amazon Managed Cassandra

    我正在尝试设置 JanusGraph 来访问 Amazon MCS 基础设施已经具备了允许访问的能力 但我在配置步骤中遇到了困难 这是我要设置的配置janusgraph cql properties storage backend cql
  • 如何解决 Android get-app-links 返回状态 1024?

    我无法获得在 Android 13 上工作的深层链接 我已经遵循了所有教程 但无法让应用程序在进入网站后简单启动 我在 android studio 终端中使用了命令 adb shell pm get app links com where
  • 在 mvc4 中使用 ajax post 处理大量数据时,系统抛出 System.ArgumentException 异常

    我正在执行 ajax post 以在 mvc4 中发布来自 javascript 的数据 但失败并出现以下异常 string exceeds the value set on the maxJsonLength property Param
  • 何时使用index.php而不是index.html

    我对 php 比较陌生 有一件非常基本的事情一直困扰着我 据我了解 php 用于使网站动态化 我还了解到 php 是可用于制作动态网站的众多服务器端脚本语言之一 但是 我不明白的是 我什么时候需要使用index php页面 举例来说 如果我
  • 解释 C# 中的后自增 [重复]

    这个问题在这里已经有答案了 我有一些代码 static void Main string args int j 0 for int i 0 i lt 10 i j j Console WriteLine j 为什么答案是0 这是因为 增量工
  • 用于文本选择的浮动工具栏 Jetpack Compose

    如何在 Jetpack Compose 中将选定文本的菜单自定义到 TextField 我的意思是这样的 在官方文档或互联网上没有找到任何有关如何使用 Jetpack Compose 执行此操作的信息 您可以提供定制TextToolbar
  • 访问模型视图类内部的模型属性

    如果这是一个愚蠢的问题 请提前抱歉 但我仍然有点困惑 阅读 Flask 管理文档尚未给出任何结果 在这个例子中Flask admin 图片上传示例 https github com flask admin flask admin blob