如何以wtf格式指定多个数据库字段,这样我就可以正确地在数据库中插入一行。我在模板中需要这样的东西
{{ wtf.form_field(gform.GHF(value="{{ project.name }}")) }}
因为我正在迭代一个(项目)到多个(目标)
项目 - (有很多目标)
-goal -
我的目标表单多次显示。
{% for project in P %}
{% for pgoal in project.goals.all() %}
<li>
Goal: {{ pgoal.goal }}<br>
{% if loop.last %}
<form class="form form-horizontal" method="post" role="gform">
{{ gform.hidden_tag() }}
{{ wtf.form_errors(gform) }}
{{ wtf.form_field(gform.goal) }}
Help here? do i need a hiddenfield to know which project?
{{ wtf.form_field(gform.submit) }}<br>
and so on...
一旦我有了正确的项目,我将在我的视图中使用它
u=models.Projects.query.get(correct project?)
p=models.Goals(goal=gform.goal.data,proj=u)
答案 0 :(得分:2)
我不会用隐藏的字段来做。我会以不同的方式提交每个表单。
你应该有像
这样的东西<form class="form form-horizontal" method="post" role="gform"
action="{{ url_for('add_goal_to_project', project_id=project.id) }}">
路线将是
@app.route('.../<int:project_id>', methods=['POST'])
def add_goal_to_project(project_id):
gform = GForm(....)
if gform.validate_on_submit():
project = models.Projects.query.get(project_id)
goal = models.Goals(gform.goal.data, proj=project)
# Do anything else you need to do, such as adding and committing
# the new object
return redirect(...)
return render_template(...)
我正在跳过表单创建,重定向和render_template调用中的详细信息,但这应该可以解决这个问题。每个目标表单的操作都指向根据项目ID构建的路由。
您可以对此进行扩展以允许编辑目标,并且您也可以通过一些不错的ajax帖子使其更好。