将关系查询对象表示形式转换为FlaskAdmin表单字段中的字符串

2024-05-03 07:19:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我实现了一个categories特性来对一个简单的blog上的帖子进行排序,但是flaskadmin在create/edit页面的category字段中提供了查询对象表示。在

我想在下拉菜单中显示每个类别的name字段,而不是查询对象表示,即:

Cool Stuff而不是<Category 'Cool Stuff'>

我怀疑这可以通过使用ModelView上的form_args属性指定一个标签名称来实现,比如:

form_args = dict(
    category=dict(label=model.name)
)

但是,我不知道如何从ModelView类中访问模型。我找到了this answer,但它似乎是一个特定的而不是一般的解决方案,不适用于我的案例。在

而且,source code表示模型应该是可用的,但是没有指定如何访问它。在

如何从ModelView中访问模型?如果这是不可能的,是否有另一个解决方案来解决查询对象表示问题?在

编辑:

以下是我目前掌握的代码:

模型.py

^{pr2}$

routes.py

class PostModelView(ProBlogModelView):                                          
    form_overrides = dict(content=CKTextAreaField)                              
    form_excluded_columns = ['id', 'slug', 'date_created', 'date_modified', ]   
    form_args = dict(                                                           
        title=dict(validators=[InputRequired()]),                               
        content=dict(validators=[InputRequired()]),                             
        img=dict(label="Image URL", validators=[InputRequired()]),              
    )

Flask Admin在默认情况下使用下拉菜单显示Post模型的编辑和创建页面上的现有类别集。该菜单中包含的选项应该是类别模型的每个实例的__repr__值,而不是其name属性。我的目标是显示名称而不是__repr__值。在

我已经在Post-admin区域的主列表表中使用了column_formatters,但是我不清楚如何在编辑/创建页面表单中执行相同的操作。在


Tags: 对象name模型form编辑args页面类别