超级链接到内联表单标签

时间:2018-08-08 06:52:25

标签: flask-sqlalchemy flask-admin

我正在使用多层嵌套模型。

例如,我有“测试”->“部分”->“问题”->“选择”

其中->表示一对多关系。

我希望能够使用某种超链接转到内联模型的编辑页面。

这是链接(理想情况下)的位置的示例图像:

enter image description here

突出显示的区域是我想要超链接的地方。

当前有两个问题:

  1. 我希望内联表单显示Section #id,而不显示Section#1,#2等。
  2. 我希望突出显示的部分将我带到该部分的编辑页面,在那里我可以内联编辑问题等。

如何在flask admin中进行操作?

1 个答案:

答案 0 :(得分:0)

您可以像这样将hybrid_property添加到模型

from sqlalchemy.ext.hybrid import hybrid_property

class Section(db.Model):
    @hybrid_property
    def link(self):
        # check id for new model (not show link)
        if self.id:
            return '/section/edit/?id={0}'.format(self.id)

    @link.setter
    def link(self, value):
        pass

inline_models 如下:

inline_models = (
    (Section, {
        'form_extra_fields': {
            'link': LinkField(label=''),
        },
        'form_rules': ('link',)
    }),
)

其中LinkField是自定义wtf字段,例如:

from wtforms import TextField
from wtforms.widgets import HTMLString

class LinkWidget(object):

    def __call__(self, field, **kwargs):
        html = ''
        if field.object_data:
            html = '<a href="{0}" class="alert-link">Go to record</a>'.format(field.object_data)

        return HTMLString(html)

class LinkField(TextField):
    widget = LinkWidget()

屏幕: enter image description here

此外,您可以覆盖 inline_list_base.html ,但不建议这样做。