我可以使用虚拟字段在 web2py 中显示链接 table 的值吗?

Can I use a virtual field to display the value of a linked table in web2py?

我将尝试用一个例子来阐明我的问题:-)

假设我想显示有关汽车剩余价值的评论文本,仅基于汽车品牌和制造年份。 table 'ResidualValueInfo' 将包含一个包含汽车、制造年份和要显示的相应文本的矩阵。

我会有以下模型:

db.define_table('brand',
                Field('name',type='text'),
                Field('info',type='text'),
                Field('logo')
                )

db.define_table('age',
                Field('buildYear',type='integer'),
                Field('backgroundInfoAboutThatYear',type='text')
                )

db.define_table('ResidualValueInfo',
                Field('brand','reference brand'),
                Field('age','reference age'),
                Field('comment',type='text')
                )

最后,我将创建 'cars' table,我将在其中存储我的用户的输入:

db.define_table('car',
                Field('owner',type='text'),
                Field('color',type='text'),
                Field('brand','reference brand'),
                Field('age','reference age'),
                )

我的输入表单如下所示:

def addNew():
    form = SQLFORM(db.car)
    if form.process().accepted:
        response.flash = T('car added')
        redirect(URL('view'))
    else:
        response.flash = T('Please complete the form')
        return locals()

但是在填写表格(并因此选择品牌和年龄)时,我已经想显示链接的 ResidualValueInfo table 的 'comments' 字段,甚至在点击保存按钮之前...

HEEEEEELP :-)

我不相信有任何神奇的内置方法可以做你想做的事。这是一个棘手的问题,需要在选择后调用 AJAX 来获取数据。

大意是这样的:

  1. 将事件侦听器附加到表单中的品牌和年龄控件(请参阅 here)。我可能会在页面加载后执行此操作。
  2. 当它们触发时,向控制器发出 AJAX 调用,该控制器可以查询数据库以根据选定的年龄和品牌查找评论。有多种方法可以做到这一点 - 这里是一个通用的 one and here is a web2py ajax call.
  3. 使用返回的数据更新您的表单。

这不是一个小问题,因此需要一些思考。 web2py 让很多事情变得简单 - 但不是那种事情。