14

我正在生成一个带有 wtforms 的 html 表单,如下所示:

<div class="control-group">
    {% for subfield in form.time_offset %}
    <label class="radio">
        {{ subfield }}
        {{ subfield.label }}
    </label>
    {% endfor %}
</div>

我的表单类是这样的:

class SN4639(Form):
    time_offset = RadioField(u'Label', choices=[
        ('2', u'Check when Daylight saving has begun, UTC+02:00'),
        ('1', u'Check when Daylight saving has stopped, UTC+01:00')],
        default=2, validators=[Required()])

当我现在打开编辑表单时,我通过 SQL 获得值 1 或 2 - 如何预设指定单选按钮?

4

4 回答 4

10

default=2 需要是字符串类型,而不是 int:

class SN4639(Form):
    time_offset = RadioField(u'Label', choices=[
        ('2', u'Check when Daylight saving has begun, UTC+02:00'),
        ('1', u'Check when Daylight saving has stopped, UTC+01:00')],
        default='2', validators=[Required()])
于 2014-12-07T22:16:13.287 回答
2

如果我正确理解您的问题,您希望使用预先选择的选项呈现表单(而不是在没有向表单提交值的情况下返回默认选择)......

您可以做的是在设置预选值的同时构造表单:

myform = SN4639(time_offset='2')

然后传递myform给您的模板进行渲染。

于 2013-06-30T03:22:00.857 回答
0

我的朋友,

实例化表单后,您需要使用数据库中的数据填写 .data 字段。看那个例子:

my_instance = SN4639()
my_db_id = get_id_on_my_db()  # fill the variable with the database id

my_instance.time_offset.data = my_db_id  # here's the cat jump

现在,当您在 HTML 中使用 my_instance.time_offset () 时,将选择正确的收音机

重要提示:

如果您的 id 是整数,则必须在 RadioField 中添加参数 coerce=int。看那个例子:

time_offset = RadioField(u'Label', choices=[
    (2, u'Check when Daylight saving has begun, UTC+02:00'),
    (1, u'Check when Daylight saving has stopped, UTC+01:00')],
    coerce=int,
    default=2, validators=[Required()])
于 2021-04-20T15:40:27.160 回答
-1

Form.__init__如果没有提供表单数据或其他默认值,则接受一个关键字参数obj=,该参数将从给定对象填充表单。将结果从数据库传递给它,它应该可以工作。

于 2013-06-30T03:26:57.610 回答