使用wtforms的Flask网格编辑
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用wtforms的Flask网格编辑相关的知识,希望对你有一定的参考价值。
我正在做一个项目,该项目提取俄勒冈州白酒价格表中列出的所有烈酒的清单,并将其存储在我的烧瓶应用程序中的表格中。目的是使主持人可以看到列表,并在每个烈酒旁边选中一个框,以指定是否是威士忌。
这是我第一次真正使用flask,但是我已经两次阅读了一本有关flask的书,试图去理解它,所以这是我尝试构建自己的东西。
现在,如果我选中一个框,然后单击提交,则所有记录都将切换为is_whiskey = False,而不是每个记录都是单独完成的。
这是我的模特:
class Whiskies(db.Model):
__tablename__ = 'whiskies'
id = db.Column(db.Integer, primary_key=True)
ols_name = db.Column(db.String(64), unique=True)
display_name = db.Column(db.String(64), unique=True, index=True)
display_distiller = db.Column(db.String(64), unique=False)
is_whiskey = db.Column(db.Boolean, default=True)
reviews = db.relationship('Review', backref='review', lazy='dynamic')
这是我的观点:
@main.route('/update-whiskies', methods=['GET', 'POST'])
@login_required
@permission_required(Permission.MODERATE)
def update_whiskies():
whiskies = Whiskies.query.all()
is_whiskey_form = IsWhiskeyForm()
submitpageform = SubmitPageForm()
if submitpageform.validate_on_submit():
for w in whiskies:
w.is_whiskey = is_whiskey_form.is_whiskey.data
db.session.update(w)
db.session.commit()
flash("You updated a bunch of whiskies")
return redirect(url_for('.index'))
return render_template('update_whiskies.html', whiskies=whiskies,
is_whiskey_form=is_whiskey_form,
submitpageform=submitpageform)
这是我的.html页面:
% extends "base.html" %
% import "bootstrap/wtf.html" as wtf %
% block page_content %
<div>
% for whiskey in whiskies %
<li class="whiskey">
% if whiskey.display_name %
whiskey.display_name
% else %
whiskey.ols_name
% endif %
is_whiskey_form.is_whiskey.label
is_whiskey_form.is_whiskey(value=whiskey.is_whiskey)
</li>
% endfor %
wtf.quick_form(submitpageform)
</div>
% endblock %
这是我的表格:
class IsWhiskeyForm(Form):
"This is intended for use in bulk editing whiskies"
is_whiskey = BooleanField("Is Whiskey", default="checked")
class SubmitPageForm(FlaskForm):
"This is intended for submitting a batch edit"
submit = SubmitField('Update Whiskies')
这是页面当前的外观。我希望能够选中一个框并单击“提交”,然后将其反映在数据库中。
非常感谢愿意帮助我的人。我被困了大约一个星期,我只需要克服这个驼峰就可以完成我的模块了。
答案
尝试一下
if submitpageform.validate_on_submit():
for w in whiskies:
w.is_whiskey = is_whiskey_form.is_whiskey.data
db.session.commit()
删除db.session.update(w)
以上是关于使用wtforms的Flask网格编辑的主要内容,如果未能解决你的问题,请参考以下文章