1 回答
TA贡献1801条经验 获得超8个赞
我似乎已经通过这个问题获得了我想要的结果。我原来的问题的一部分实际上与我没有在我的问题中发布的视图中的一些代码有关。
在 上,我将(突出显示的选项)if form.validate_on_submit():中的标签附加到我的. 在帖子已经附加标签的情况下,这意味着取消选择字段中的默认值确实会根据需要清空,但无论如何仍然有原始数据,因此没有变化。form.tags.datapost.tagsform.tags.datapost.tags
这是通过以下方式解决的:
# empty tags list then add highlighted choices
post.tags = []
for id in form.tags.data:
t = Tag.query.filter_by(id=id).first()
post.tags.append(t)
我还更改了填充表单的代码,使其更简单。我错了需要使用defaultover data(坦率地说,我不明白两者之间的区别):
# populate form, blank for new post
form = EditorForm(obj=post)
# populate tags field
form.tags.choices = [(tag.id, tag.tag) for tag in Tag.query.order_by('tag')]
# populate defaults only on GET otherwise user choice overidden
if request.method == 'GET':
# declare default (highlighted) tags list
form.tags.data = []
# if post has tags, highlight them
if post.tags:
for tag in post.tags:
form.tags.data.append(tag.id)
添加回答
举报