python - 如何跟踪 Flask-WTF 中的表单字段变化?

标签 python google-app-engine flask wtforms flask-wtforms

我有成员字段的模型,如下所示:

class Team(db.Model):
    --- some fields ---
    members = ListProperty(db.Key) # Using App Engine datastore as backend.

我正在使用 Flask-WTFforms 使用此模型创建表单。在创建新团队时,用户将在表单中选择一些成员并保存。用户还可以编辑团队表单并对成员字段进行更改(可以添加或删除成员)。我想通过与之前存储在成员字段中的数据进行比较来检查添加或删除了多少成员。同样适用于其他领域。

我使用 session 来实现这一点:

def 编辑团队(键):
k = db.Key(key)
team = db.get(k)
form = TeamForm(obj = team)
if not form.is_submitted(): # Indicates GET request
    session[str(g.user.user_id() + 'prev_members'] = form.members.data
if form.validate_on_submit():
    form.populate_obj(project)
    # I will use session data with new form.members.data to do further processing.

这是处理这种情况的正确方法吗?
感谢您的任何帮助..

最佳答案

你的代码的问题是

team = db.get(k)
form = TeamForm(obj = team)

如果请求是 GET ,对象的数据必须从模型中加载。但是,如果请求是 POST (或 PUTPATCH )这意味着您需要阅读请求正文以形成对模型进行适当更新。看来您正在使用 k变量作为模型指标的关键。
k = db.Key(key)
team = db.get(k)
if request.method == "GET":
    # create form from the model
    form = TeamForm(obj = team)

elif request.method == "POST":
    # update model with the form
    form = TeamForm() #flask-wtf automatically reads from request object
    # validate, update, delete, ...

关于python - 如何跟踪 Flask-WTF 中的表单字段变化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16539239/

相关文章:

python - 图像卷积函数的矢量化实现

python - 如何在页面上显示查询数量? (谷歌应用程序引擎)

python - 告诉 Flask 只将上传的内容存储在内存中而不使用临时文件

python - 使用 Python 将 BibTex 文件转换为数据库条目

python - 多个单选按钮组链接,导致奇怪的行为

Python 组合列表——保留相对顺序

java - 如何映射 "root"Servlet 以便其他脚本仍可运行?

python - 适用于 Google App Engine 的博客软件

python - 将基于 Flask 的 Api(使用女服务员)部署到 Docker

python - 按多对多关系的计数排序 - SQLAlchemy