您有下表
db.define_table('templates',
Field('id','id'),
Field('user_id',db.auth_user),
Field('name','string'))
db.define_table('user_settings',
Field('id','id'),
Field('user_id',db.auth_user),
Field('default_template', db.templates)
Field('name','string'))
表格:
def templates():
form = SQLFORM.grid(db.templates,
links [lambda row: A(SPAN(_class='icon trash icon-trash'), SPAN(T('Delete'),_class='buttontext button'), _class='button btn', _href=URL('delete',args=[db.templates,row.id]))])]
return dict(form=form)
我的删除功能是
def delete():
if request.args(0) == 'templates':
db(db.templates.user_id == auth.user_id).delete()
return dict(form=redirect(URL('templates')))
return dict(form=redirect(URL('index')))
当我从templates
删除记录时
db.user_settings
中的相关记录也将被删除
使用简单SQLFORM(query, record, deletable=True)
生成的自定义表单创建一个检查按钮“删除”它可以正常工作,db.user_settings.default_template
只会设置为无。
如何防止这种情况? 我的删除查询是否为假?
答案 0 :(得分:0)
我用这个
修复了它def delete():
if request.args(0) == 'templates':
if db.templates[request.args(1)].id == auth.user_id:
db(db.templates.id == request.args(1)).delete()
return dict(form=redirect(URL('templates')))
return dict(form=redirect(URL('index')))