如何使用WTForms从模型列表创建表单?

洛尔巴特

我有Prediction型号清单我想将它们绑定到表单,并允许使用回发。如何构造我的表单,以便帖子将我绑定到表单的每个项目的“主客场”得分与Prediction模型id字段相关联

视图

@app.route('/predictor/',methods=['GET','POST'])
@login_required
def predictions():    
    user_id = g.user.id
    prediction= # retrieve prediction
    if request.method == 'POST':
        if form.validate() == False:
            flash('A score is missing, please fill in all predictions')
            render_template('predictor.html', prediction=prediction, form=form)
        else:
            for pred in prediction:
                # store my prediction
            flash('Prediction added')
            return redirect(url_for("predictions"))    
    # display current predictions
    elif request.method == 'GET':
        return render_template('predictor.html', prediction=prediction, form=form)

形成

class PredictionForm(WTForm):
    id = fields.IntegerField(validators=[validators.required()], widget=HiddenInput())
    home_score = fields.TextField(validators=[validators.required()])
    away_score = fields.TextField(validators=[validators.required()])

模板

  <form action="" method="post">
    {{form.hidden_tag()}}
    <table>
        {% for pred in prediction %}
        <tr>
            <td>{{pred.id}}</td>
            <td>{{form.home_score(size=1)}}</td>
            <td>{{form.away_score(size=1)}}</td>               
        </tr>
        {% endfor %}
    </table>
    <p><input type="submit" value="Submit Predictions"></p>
   </form>

我无法获取要正确绑定的数据POST由于发布数据缺少所有必填字段,因此必填验证器连续失败

nsfyn55

您需要一个子表单,该子表单将绑定到预测列表中的项目:

您描述的表格仅允许您提交一个预测。似乎存在差异,因为您绑定了一个可迭代的预测,并且似乎希望为每个预测提供本垒打预测。实际上,它永远不会回发一个id字段。这总是会导致您无法通过表单验证。我认为您想要的是子表单列表。像这样:

# Flask's form inherits from wtforms.ext.SecureForm by default
# this is the WTForm base form. 
from wtforms import Form as WTForm

# Never render this form publicly because it won't have a csrf_token
class PredictionForm(WTForm):
    id = fields.IntegerField(validators=[validators.required()], widget=HiddenInput())
    home_score = fields.TextField(validators=[validators.required()])
    away_score = fields.TextField(validators=[validators.required()])

class PredictionListForm(Form):
    predictions = FieldList(FormField(PredictionForm))

您的视图将需要返回以下内容:

predictions = # get your iterable of predictions from the database
from werkzeug.datastructures import MultiDict
data = {'predictions': predictions}
form = PredictionListForm(data=MultiDict(data))
    
return render_template('predictor.html', form=form)

您的表格将需要更改为以下形式:

<form action='my-action' method='post'>
    {{ form.hidden_tag() }}
    {{ form.predictions() }}
</form>

现在,这将打印出<ul>带有<li>因为多数民众赞成FieldList中确实每个项目。我将由您来设置样式并以表格形式显示。这可能有些棘手,但并非没有可能。

在POST上,您将获得一个formdata词典,其中包含每个预测的得失分id然后,您可以将这些预测重新绑定到SQLAlchemy模型中。

[{'id': 1, 'home': 7, 'away': 2}, {'id': 2, 'home': 3, 'away': 12}]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用WTForms从模型列表中创建表单?

来自分类Dev

从模型烧瓶,sqlalchamey和wtforms创建表单

来自分类Dev

Django表单:如何使用现有模型中的值在表单中创建简单的下拉列表

来自分类Dev

如何基于模型记录创建Django表单下拉列表

来自分类Dev

如何使用Flask-WTForms以DRY方式创建重复的表单元素?

来自分类Dev

如何使用WTForms填充对象列表?

来自分类Dev

如何使用Flask WTForms创建多选选项

来自分类Dev

如何使用Bootstrap 3创建2列表单

来自分类Dev

如何在AngularJS中使用表单创建下拉列表

来自分类Dev

TornadoFX如何使用子窗口模型列表创建MDI?

来自分类Dev

如何创建/使用表单和模型绑定器从View => Controller中传递集合

来自分类Dev

如何从数组创建表单列表?

来自分类Dev

如何从模型中的列表创建矩阵显示

来自分类Dev

如何使用模型属性验证Django表单?

来自分类Dev

如何删除Django模型表单的内置错误列表?

来自分类Dev

如何使用子模型访问表单中的父模型字段?

来自分类Dev

如何从ASP.NET MVC 5中的模型创建表单?

来自分类Dev

如何获取ForeignKey ID以创建与模型链接的新表单?

来自分类Dev

如何订购在Django中动态创建的模型表单字段

来自分类Dev

如何创建带有模型queryset的多选表单?

来自分类Dev

如何从模型生成的表单中指定所需的小部件(例如TextArea而不是简单的Text输入)?Flask SQLAlchemy WTForms

来自分类Dev

使用Flask / WTForms的多部分表单

来自分类Dev

使用单个方法渲染 WTForms 表单?

来自分类Dev

django从列表创建表单

来自分类Dev

HTML表单类模型创建

来自分类Dev

如何添加一个表单的多个副本并使用不同的数据提交它们?烧瓶,WTForms

来自分类Dev

如何使用PreparedStatement创建列表?

来自分类Dev

如何使用图像创建列表

来自分类Dev

如何使用sinatra创建登录表单

Related 相关文章

  1. 1

    如何使用WTForms从模型列表中创建表单?

  2. 2

    从模型烧瓶,sqlalchamey和wtforms创建表单

  3. 3

    Django表单:如何使用现有模型中的值在表单中创建简单的下拉列表

  4. 4

    如何基于模型记录创建Django表单下拉列表

  5. 5

    如何使用Flask-WTForms以DRY方式创建重复的表单元素?

  6. 6

    如何使用WTForms填充对象列表?

  7. 7

    如何使用Flask WTForms创建多选选项

  8. 8

    如何使用Bootstrap 3创建2列表单

  9. 9

    如何在AngularJS中使用表单创建下拉列表

  10. 10

    TornadoFX如何使用子窗口模型列表创建MDI?

  11. 11

    如何创建/使用表单和模型绑定器从View => Controller中传递集合

  12. 12

    如何从数组创建表单列表?

  13. 13

    如何从模型中的列表创建矩阵显示

  14. 14

    如何使用模型属性验证Django表单?

  15. 15

    如何删除Django模型表单的内置错误列表?

  16. 16

    如何使用子模型访问表单中的父模型字段?

  17. 17

    如何从ASP.NET MVC 5中的模型创建表单?

  18. 18

    如何获取ForeignKey ID以创建与模型链接的新表单?

  19. 19

    如何订购在Django中动态创建的模型表单字段

  20. 20

    如何创建带有模型queryset的多选表单?

  21. 21

    如何从模型生成的表单中指定所需的小部件(例如TextArea而不是简单的Text输入)?Flask SQLAlchemy WTForms

  22. 22

    使用Flask / WTForms的多部分表单

  23. 23

    使用单个方法渲染 WTForms 表单?

  24. 24

    django从列表创建表单

  25. 25

    HTML表单类模型创建

  26. 26

    如何添加一个表单的多个副本并使用不同的数据提交它们?烧瓶,WTForms

  27. 27

    如何使用PreparedStatement创建列表?

  28. 28

    如何使用图像创建列表

  29. 29

    如何使用sinatra创建登录表单

热门标签

归档