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

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(使用前将#替换为@)

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

  • 用于查找列表/集合中唯一元素的代码

    根据上面阴影部分的面积应该代表 A XOR B XOR C XOR A AND B AND C 如何将其翻译成Python代码 代码必须与上述表达式中提供的集合操作密切相关 至少这是首选 该代码必须足够通用 能够处理 3 个以上的列表 UP
  • 顶级棉花糖模式验证

    From 棉花糖 validation http marshmallow readthedocs org en latest quickstart html validation 我知道我可以在架构中的特定字段上注册验证器 如果验证器失败
  • 查找 python 数据框中每行的最高值

    我想找到每行中的最高值并返回 python 中该值的列标题 例如 我想找到每行的前两个 df A B C D 5 9 8 2 4 1 2 3 我希望我的输出看起来像这样 df B C A D 您可以使用字典理解来生成largest n数据帧
  • SQLAlchemy:检查给定值是否在列表中

    问题 在 PostgreSQL 中 检查某个字段是否在给定列表中是使用IN操作员 SELECT FROM stars WHERE star type IN Nova Planet SQLAlchemy 的等价物是什么INSQL查询 我尝试过
  • 如何充分释放函数中使用的GPU内存

    我在用着cupy在接收一个函数numpy数组 将其推到 GPU 上 对其进行一些操作并返回cp asnumpy它的副本 问题 函数执行后内存没有被释放 如ndidia smi 我知道内存的缓存和重用cupy 但是 这似乎仅适用于每个用户 当
  • 为什么我不能“string”.print()?

    我的理解print 在 Python 和 Ruby 以及其他语言 中 它是字符串 或其他类型 上的方法 因为它的语法非常常用 打印 嗨 works 那么为什么不呢 hi print 在 Python 中或 hi print在红宝石工作 当你
  • 使用Python进行图像识别[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我有一个想法 就是我想识别图像中的字母 可能是 bmp或 jpg 例如 这是一个包含字母 S 的 bmp 图像 我想做的是使用Pyth
  • 比较两个文本文件并计算差异

    我一直在尝试在Python中比较两个文本文件 本质上我想打开它们并一次比较一个字符 如果字符不同 则向计数器添加1 然后显示该值 这是我到目前为止所拥有的 usr bin env python diff 0 import random im
  • 为什么我在将数据上传到数据库时不断看到“正在重置断开的连接”?

    我正在通过 REST API 将数亿个项目从 Heroku 上的云服务器上传到 AWS EC2 中的数据库 我正在使用 Python 并且经常在日志中看到以下 INFO 日志消息 requests packages urllib3 conn
  • Python代码执行时自动打开浏览器

    我正在 Python Flask 中实现 GUI Flask 的设计方式是 必须 手动 打开本地主机以及端口号 有没有一种方法可以使其自动化 以便在运行代码时自动打开浏览器 本地主机 我尝试使用 webbrowser 包 但它在会话终止后打
  • django 中的“管理器”是什么?

    我已经阅读了Django官方中的定义文档 https docs djangoproject com en dev topics db managers 我仍然对什么感到困惑Manager does 文档说它们允许您操作数据库表 模型 但我仍
  • Python:使用for循环更改变量后缀

    我知道这个问题被问了很多 但到目前为止我无法使用 理解答案 我想改变for循环中变量的后缀 我尝试了 stackoverflow 搜索提供的所有答案 但很难理解提问者经常提出的具体代码 因此 为了清楚起见 我使用一个简单的示例 这并不意味着
  • 使用 plone.api 创建文件的 Python 脚本在设置文件时出现错误 WrongType

    Dears 我正在创建一个脚本python来在Plone站点中批量上传文件 安装是UnifiedInstaller Plone 4 3 10 该脚本读取了一个txt 并且该txt以分号分隔 在新创建的项目中设置文件时出现错误 下面是脚本 f
  • 与 GNU Make 等 Python 相关的并行任务并发

    我正在寻找一种方法或者可能是一种哲学方法来如何在 python 中执行类似 GNU Make 的操作 目前 我们使用 makefile 来执行处理 因为 makefile 非常擅长通过更改单个选项 j x 进行并行运行 此外 gnu mak
  • 如何使用 Ajax 在 Flask 中发布按钮值而不刷新页面?

    我有一个问题 当我单击 Flask 应用程序中的按钮时 我想避免重新加载 我知道有 Ajax 解决方案 但我想知道如何将我的按钮链接到 ajax 函数以发布按钮值并运行链接到其值的 python 函数 这是我的 html 按钮 div di
  • 如何从外语线程调用Python函数(C++)

    我正在开发一个程序 使用 DirectShow 来抓取音频数据 媒体文件 DirectShow 使用线程将音频数据传递给回调 我的程序中的函数 然后我让该回调函数调用另一个函数 Python 中的函数 我使用 Boost Python 来包
  • 在Python中将罗马数字转换为整数

    根据 user2486 所说 这是我当前的代码 def romanMap map M 1000 CM 900 D 500 CD 400 C 100 XC 90 L 50 XL 40 X 10 IX 9 V 5 V 4 I 1 return
  • 在Python中打开网站框架或图像

    所以我对 python 相当熟练 并且经常使用 urllib2 和 Cookies 来实现网站自动化 我刚刚偶然发现了 webbrowser 模块 它可以在默认浏览器中打开一个网址 我想知道是否可以从该 url 中仅选择一个对象并打开它 具
  • Matplotlib 渲染日期、图像的问题

    我在使用 conda forge 的 Matplotlib v 3 1 3 和 python 3 7 时遇到问题 我拥有 Matplotlib 所需的所有依赖项 当我输入这段代码时 它应该可以工作 我得到了泼溅艺术 它基于此 YouTube
  • 如何有效地计算另一列中每个元素的较大元素的数量?

    我有以下内容df name created utc 0 t1 cqug90j 1430438400 1 t1 cqug90k 1430438400 2 t1 cqug90z 1430438400 3 t1 cqug91c 143043840

随机推荐

  • 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