我在这个项目中使用sqlalchemy。在
除了delete函数之外,所有的操作都对CRUD运行良好。在
只是想知道发生了什么事?在
# Edit the specific item
@app.route('/catalog/<int:categories_id>/<int:items_id>/edit',
methods=['GET', 'POST'])
@login_required
def editItem(categories_id, items_id):
editedItem = session.query(CategoryItem).filter_by(id=items_id).one()
...
if request.method == 'POST':
...
session.add(editedItem)
session.commit()
flash("item edited successfully!")
return redirect(url_for('showItem', categories_id=categories_id,
items_id=items_id))
else:
return render_template('edititem.html', categories_id=categories_id,
items_id=items_id, item=editedItem)
# Delete the specific item
@app.route('/catalog/<int:categories_id>/<int:items_id>/delete',
methods=['GET', 'POST'])
@login_required
def deleteItem(categories_id, items_id):
itemToDelete = session.query(CategoryItem).filter_by(id=items_id).one()
...
if request.method == 'POST':
session.delete(itemToDelete)
session.commit()
flash("item deleted successfully!")
return redirect(url_for('showCategories', categories_id=categories_id))
else:
return render_template('deleteitem.html', categories_id=categories_id,
items_id=items_id, item=itemToDelete)
正如你在代码中看到的。在
editItem和deleteItem都在使用会话.查询(CategoryItem)。筛选依据(id=items_id).one()
但是当我删除这个项目的时候。在
不是单个项目被删除,而是整个类别被删除。在
请参阅下面的模板
^{pr2}$我不知道是什么引起了这个问题。在
这是因为您设置了与cascade
delete-orphan
的关系。在CategoryItem表是父表。您正在它内部设置一个关系,将Categories作为子对象。当您有
cascage='delete-orphan'
时,这包括级联删除,但是添加了行为(您可以在这里阅读更多关于它的信息:http://docs.sqlalchemy.org/en/latest/orm/cascades.html#delete)尝试从级联参数中删除
delete-orphan
相关问题 更多 >
编程相关推荐