gpt4 book ai didi

python - web2py 中 SQLFORM.factory 的条件字段

转载 作者:行者123 更新时间:2023-11-30 23:14:10 25 4
gpt4 key购买 nike

假设我使用 SQLFORM.factory 构造一个表单,如下所示:

my_fields = [Field('field1', default='some value'), 
Field('field2', default = 'some other value')]
form = SQLFORM.factory(*my_fields)

现在我希望仅当 field 等于某个值时才显示 field2。但是,当我尝试做类似的事情时:

my_fields[1].show_if = my_fields[0] == 'some value'

(在我真正 build 工厂之前)我得到:

  File "/Applications/web2py.app/Contents/Resources/gluon/packages/dal/pydal/objects.py", line 1202, in __eq__
return Query(db, db._adapter.EQ, self, value)
AttributeError: 'NoneType' object has no attribute '_adapter'

我的猜测是 show_if 不起作用,因为它是一个查询,而且我实际上并没有使用表格......但我没有表格,这就是为什么我'我使用SQLFORM.factory。关于如何在这种情况下使字段成为条件有什么建议吗?

最佳答案

好吧,我明白了。

如果您检查 SQLFORM.factory 表单上的页面源代码,您会注意到给定的 id 为 "no_table_field1""no_table_field2"。因此, 窃取 借用了 web2py 书中 JQuery & Ajax 章节的代码,我将其添加到相关 View 的末尾:

<script>
jQuery(document).ready(function(){
if(jQuery('#no_table_field1').prop('value') == 'some value')
jQuery('#no_table_field2__row').show();
else jQuery('#no_table_field2__row').hide();
jQuery('#no_table_field1').change(function(){
if(jQuery('#no_table_field1').prop('value') == 'some value')
jQuery('#no_table_field2__row').show();
else jQuery('#no_table_field2__row').hide();});
});
</script>

而且效果非常好。 (不是一个平滑的过渡,但它有效。)

关于python - web2py 中 SQLFORM.factory 的条件字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28916575/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com