我有一个表单,其中有两个多选择,一个是从数据库查询(可用)生成的,另一个是空的(选中)。我使用javascript将项目从“可用的”multiselect移动到“Selected”。

在烧瓶中,我想把所有的项目放在“选择的”多重选择到一个与每个公式相关的多到多个数据库中。
这是我的models.py:
formula_hazards = db.Table(
'formula_hazards',
db.Column('formula_id', db.Integer, db.ForeignKey('formula.id')),
db.Column('hazard_id', db.Integer, db.ForeignKey('hazard_statements.id'))
)
class HazardStatements(db.Model):
id = db.Column(db.Integer, primary_key=True)
h_code = db.Column(db.String(20), index=True, unique=True)
h_phrase = db.Column(db.String(256))
full_details = column_property(h_code + " " + h_phrase)
def __repr__(self):
return f"{self.h_code} {self.h_phrase}"
class Formula(db.Model):
id = db.Column(db.Integer, primary_key=True)
number = db.Column(db.Integer, index=True, unique=True)
signal_word = db.Column(db.String(16), nullable=True)
h_rel = db.relationship('HazardStatements', secondary=formula_hazards, backref='h_rel')这是我的app.py:
@admin.route('/admin/formulas/add', methods=['GET', 'POST'])
@login_required
def formulaadd():
if is_super():
formula_form = FormulaForm()
hazard_list = HazardStatements.query.order_by(HazardStatements.h_code).all()
if request.method == 'POST' and formula_form.validate_on_submit():
new_formula = Formula(
number = formula_form.number.data,
signal_word = formula_form.signal_word.data,
)
selected_hazards = request.form.getlist('hazard-selected')
#This is where I'm struggling to figure out how to write each 'selected hazards' to the database.
db.session.add(new_formula)
db.session.commit()
flash('Formula has been added', category='success')
return redirect(url_for('admin.formulaview'))
return render_template('/admin/formulas/formula_add.html', title="Add Formula", formula_form=formula_form, hazard_list=hazard_list)这里是我的HTML/Jinja的良好度量:
<div class="grid-item">
<label for="hazard-options">Available Hazard Statements</label>
<select id="hazard-options" name="hazard-options" class="wt-select" multiple="multiple">
{% for hazard in hazard_list %}
<option value="{{ hazard.id }}">{{ hazard.h_code }} {{ hazard.h_phrase }}</option>
{% endfor %}
</select>
<button type="button" onclick="leftHazard()">>></button>
</div>
<div class="grid-item">
<label for="hazard-selected">Selected Hazard Statements</label>
<select id="hazard-selected" name="hazard-selected" class="wt-select" multiple="multiple"></select>
<button type="button" onclick="rightHazard()"><<</button>
</div>我能够把'new_formula‘数据写到它的表格上,但是我没有写很多对很多人的经验,所以我请求帮助,因为我只是不停地绕着圈跑来跑去想办法弄清楚。
发布于 2022-06-16 10:08:02
因此,在玩了两天之后,我偶然发现了.extend(),它允许我在app.py文件中编写多到多个值:
selected_hazards = request.form.getlist('hazard-selected') # HAZARD SELECT LOGIC
individual_hazards = HazardStatements.query.filter(HazardStatements.id.in_(selected_hazards))
new_formula.h_rel.extend(individual_hazards)希望这能帮助其他人解决同样的问题,因为我在无数个小时的搜索中找不到任何清晰的答案。
https://stackoverflow.com/questions/72603318
复制相似问题