从两个SQLFORM.grid中选择记录并将记录插入第三个表

时间:2014-09-03 03:30:44

标签: mysql web2py

我想在我的belongs表中插入多条记录,而SQLFORM.grid则从两个表中选择记录。 我的桌子:

db.define_table('problem',
                Field('title','string',unique=True,length=255),
                format = '%(title)s')
db.define_table('tasks',
                Field('title','string',unique=True,length=255),
                format = '%(title)s')
db.define_table('belongs',
                Field('task_id','reference tasks'),
                Field('problem_id','reference problem'))

problem表中选择一些记录,然后从tasks表中选择一条记录,然后插入belongs表。可以通过SQLFORM.grid实现吗?

def problemtask():
    form=SQLFORM.grid(db.problem,selectable =lambda ids:insert(ids,ids1))
    form1=SQLFORM.grid(db.tasks,selectable = lambda ids1 :insert(ids,ids1) )
    return dict(form=form,form1=form1)
def insert(ids,ids1):

谢谢!

1 个答案:

答案 0 :(得分:1)

从一个表中选择一个记录,然后从另一个表中选择一些记录,最后将该组合插入到第三个表中。

def showtask():
        id=request.args(0,cast=int)#id为course_id
        db.tasks._common_filter = lambda query: db.tasks.course_id ==id
        links=[lambda row:A('createproblem',_href=URL("default","addproblem",args=[row.id])),
               lambda row:A('showproblem',_href=URL("default","showproblem",args=[row.id]))]
        form=SQLFORM.smartgrid(db.tasks,args=request.args[:1],links=links,linked_tables=[''],csv=False)
        return dict(form=form)

def mulassignproblem():
    taskid=request.args(0,cast=int)
    form=SQLFORM.grid(db.problem,args=request.args[:1],selectable = lambda ids :mulproblem(ids,taskid))
    return dict(form=form)

def mulproblem(ids,taskid):
    problemids=ids
    taskids=taskid
    for  problemid in problemids:
        if  db((db.belongs.problem_id==problemid)&(db.belongs.task_id==taskids)).count():
            pass
        else:
            db.belongs.insert(task_id=taskid,problem_id=problemid)