私のウェブサイトには、多くのアクティビティを含むモデル実験があります。私は、人々が実験からアクティビティを追加または削除できるビューを持っています。フラスコ重量の1ページに同じクラスの2つのフォーム
私は、この実験の一部であるアクティビティと、この実験の一部ではないアクティビティの表を示します。ユーザーは、追加または削除するアクティビティを確認し、テーブルの下にある送信ボタンを使用することができます。
しかし、あるフォームの選択肢のリストを更新すると、他のフォームの選択肢のリストにはこれが反映されます。私は何か間違っているのですか?
実験にアクティビティを追加したり削除したりする場合は、同じフォームを使用します。ここで
class MultiCheckboxField(SelectMultipleField):
widget = ListWidget(prefix_label=False)
option_widget = CheckboxInput()
class ActivityListForm(Form):
activities = MultiCheckboxField(validators=[DataRequired()], choices=[])
submit = SubmitField("Submit")
def populate_activities(self, activities_set):
activities_mapping = {}
for activity in activities_set:
activities_mapping[str(activity.id)] = activity
choice_tuple = (str(activity.id), activity.question)
self.activities.choices.append(choice_tuple)
return activities_mapping
が私の見解です:
def settings_experiment(exp_id):
experiment = Experiment.query.get(exp_id)
remove_activities_form = ActivityListForm(prefix="remove")
add_activities_form = ActivityListForm(prefix="add")
remove_activities_mapping = remove_activities_form.populate_activities(
experiment.activities)
add_activities_mapping = add_activities_form.populate_activities(
Activity.query.\
filter(not_(Activity.experiments.any(id=experiment.id))).all())
return render_template("experiments/settings_experiment.html",
experiment=experiment,
update_experiment_form=update_experiment_form,
remove_activities_form=remove_activities_form,
add_activities_form=add_activities_form,
add_activities_mapping=add_activities_mapping,
remove_activities_mapping=remove_activities_mapping)
remove_activities_form
とadd_activities_form
が異なるリストに別々に設定され、そのオプションが用意されていますが、どちらも私のテンプレートを台無しに彼らの2つのオプションリストの組合を含む終わりますレンダリング。それらを別々に保つ方法はありますか?上記の議論で