【问题标题】:WTForms: fetch related dataWTForms:获取相关数据
【发布时间】:2014-08-15 20:39:08
【问题描述】:

我有 FlaskFlask-WTF
我正在尝试实现表单,它应该根据从另一个(上一个)字段中选择的值(并且可能随着输入集的变化)更改 SelectFieldchoices 列表。

我是什么意思.. 例子。

例如。答:

有初始形式

Manufacturer: [ ----- ]  // Options are: Ford, KIA, Honda ...
Model:        [ ----- ]  // No options, disabled
...           .........  // Other fields

然后用户选择Ford,并显示适合模型的options

Manufacturer: [ Ford  ]  // Options are: Ford, KIA, Honda ... still posible to change
Model:        [ ----- ]  // Options are: Focus, Mondeo, Mustang, ...
...           .........  // Other fields

或者,也许是一个替代品。行为,例如。乙:

有初始形式

Manufacturer: [ ----- ]  // Options are: Ford, KIA, Honda ...

然后用户选择FordModel 字段会显示适当的选项

Manufacturer: [ Ford  ]  // Options are: Ford, KIA, Honda ... still possible to change
Model:        [ ----- ]  // Options are: Focus, Mondeo, Mustang, ...

或者,也许是“向导”,例如。 C:

有初始形式

Manufacturer: [ ----- ]  // Options are: Ford, KIA, Honda ...
[ next ]                 // button

然后用户选择Ford,点击next,显示Model字段,而前一个字段成为标签

Manufacturer:   Ford     // Just a label
Model:        [ ----- ]  // Options are: Focus, Mondeo, Mustang, ...
[prev] [ next ]          // buttons

我有一些想法,该怎么做。

1) 当用户选择(任何)字段时,我对新表单发出 POST 请求。这是可能的,因为我做了非常轻量级的应用程序。这很容易实现,但可能会很烦人,而且没有我想要的那么好。

2)当用户选择字段时,从服务器(json/pson)获取依赖字段的选项,并且该依赖字段被更新和解锁。

3) “C”行为是最容易实现的,但不是本世纪的

第二个想法听起来不错..但我是后端,不太擅长 js。


所以..问题是如何实现这样的表格? 任何指向好的教程/文档的链接都会很棒(我已经用谷歌搜索过,但没有找到)

【问题讨论】:

    标签: javascript python json flask flask-wtforms


    【解决方案1】:

    我相信有两种好方法可以实现你想要的。

    1. 使用 AJAX 根据用户选择加载所需的选项(正如您的第二个想法所建议的那样)
    2. 如果选项列表不大,您可以将所有选项嵌入为 javascript 对象,并使用 javascript 根据用户选择加载适当的选项。前任。 http://www.javascriptkit.com/javatutors/selectcontent.shtml

    从用户的角度来看,第二种方法的优点是响应速度更快,因为所需的所有数据都已经在页面上。

    您提到对 javascript 不太擅长,但我认为没有其他方法可以做您想做的事,除非您可以接受您的第一个想法。

    【讨论】:

    • 感谢您的链接。它非常有用!我同意,这应该用 js 来完成。AJAX 是最好的选择。你能为这个案例提供任何好的链接吗?
    • .. 从示例中可以看出,嵌入每个可能的制造商、型号和许多其他选项的树是矫枉过正的,因为它很大,而且 IRL 不会提交太多变化。跨度>
    • 我找到了这个:stackoverflow.com/questions/6854656/… - 看起来这就是我正在寻找的东西.. 我想,那个问题中的消息是一个 html(而不是 json),对吗?
    猜你喜欢
    • 2017-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 2019-01-16
    • 2021-12-03
    • 2018-04-13
    相关资源
    最近更新 更多