排序和删除 SQLALCHEMY 和烧瓶中的一对多关系
Sorting and Deleting a 1-to-Many relatiionship in SQLALCHEMY and flask
我正在处理一个使用一对多关系的 CRUD flask 项目。最终结果如下所示,Flask Webform. However when I submit the form for the Update route, it returns to the home page and displays this. Webform After Update.
这是我的 DB model
def 更新(id):
frank = Frankendama.query.get(id)
form = FrankForm()
if form.validate_on_submit():
frank.title=form.title.data
frank.description=form.description.data
frank.tama=form.tama.data
frank.sarado=form.sarado.data
frank.sword=form.sword.data
frank.string=form.string.data
frank.bearing=form.bearing.data
db.session.add(frank)
db.session.commit()
comps = form.companies.data
comps_used = comps.split(",")
all_comps = Company.query.all().filter_by(Company.frankendama_id == id) #Error here
for entry in all_comps:
if entry.frankendama_id == id:
db.session.delete(entry)
for i in range(0, len(comps_used)):
new_entry = comps_used[i]
new_comp = Company(name=new_entry, frankendama_id=id)
db.session.add(new_comp)
db.session.commit()
return redirect(url_for("home"))
else:
return render_template("create.html", form=form)
我正在尝试查找公司 table 的查询,该查询使用与主 tables id 相同的外键 'frankendama_id' 对所有行进行排序。这样我就可以删除它们,然后重新添加它们。
当我尝试使用 filter() 或 filter_by() 时,出现错误 AttributeError: 'list' object has no attribute 'filter_by'
实在是太难了,欢迎指教!谢谢
将filter_by移到.all()
前面
all_comps = Company.query.filter_by(frankendama_id = id).all()
编辑 1:
您也可以在使用 filter_by 时删除 'Company.' 并且您只需要一个等号
我正在处理一个使用一对多关系的 CRUD flask 项目。最终结果如下所示,Flask Webform. However when I submit the form for the Update route, it returns to the home page and displays this. Webform After Update.
这是我的 DB model
def 更新(id):
frank = Frankendama.query.get(id)
form = FrankForm()
if form.validate_on_submit():
frank.title=form.title.data
frank.description=form.description.data
frank.tama=form.tama.data
frank.sarado=form.sarado.data
frank.sword=form.sword.data
frank.string=form.string.data
frank.bearing=form.bearing.data
db.session.add(frank)
db.session.commit()
comps = form.companies.data
comps_used = comps.split(",")
all_comps = Company.query.all().filter_by(Company.frankendama_id == id) #Error here
for entry in all_comps:
if entry.frankendama_id == id:
db.session.delete(entry)
for i in range(0, len(comps_used)):
new_entry = comps_used[i]
new_comp = Company(name=new_entry, frankendama_id=id)
db.session.add(new_comp)
db.session.commit()
return redirect(url_for("home"))
else:
return render_template("create.html", form=form)
我正在尝试查找公司 table 的查询,该查询使用与主 tables id 相同的外键 'frankendama_id' 对所有行进行排序。这样我就可以删除它们,然后重新添加它们。
当我尝试使用 filter() 或 filter_by() 时,出现错误 AttributeError: 'list' object has no attribute 'filter_by'
实在是太难了,欢迎指教!谢谢
将filter_by移到.all()
前面all_comps = Company.query.filter_by(frankendama_id = id).all()
编辑 1: 您也可以在使用 filter_by 时删除 'Company.' 并且您只需要一个等号