web2py删除查询

时间:2013-11-28 23:22:37

标签: python sqlite web2py

您有下表

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只会设置为无。

如何防止这种情况? 我的删除查询是否为假?

1 个答案:

答案 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')))