我有成员字段的模型,如下所示:
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
(或 PUT
, PATCH
)这意味着您需要阅读请求正文以形成对模型进行适当更新。看来您正在使用 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/