模型:
# coding: utf8
db.define_table('dept',
Field('name',unique=True,label='Department Name'),
format='%(name)s')
db.define_table('course',
Field('dept_id','reference dept'),
Field('name',unique=True,label='Course Name'),
format='%(name)s')
db.define_table('files',
Field('course_id', 'reference course'),
Field('documentx','upload'))
控制器:
def show_doc():
rows = db( db.course.id == db.files.course_id , db.dept.id==db.course.dept_id).select()
return rows
我要做的是将部门表“dept”与“course”表和“course”表与“files”表一起加入。所以在输出时会显示一个包含部门的表格,其中包含课程和文件。解决方案不起作用。它只在“课程”表和“文件”表之间创建一个连接。
答案 0 :(得分:4)
正如book所述,它应该是:
db((db.course.id == db.files.course_id) & (db.dept.id==db.course.dept_id))
答案 1 :(得分:1)
在您的控制器中,您只需选择所有文件:
def show_doc():
rows = db(db.files.documentx).select()
return dict(rows=rows)
然后,在您的视图“ show_doc.html ”中,您可以访问链接的字段:
{{extend 'layout.html'}}
{{for row in rows:}}
<div>Department : {{=row.course_id.dept_id.name}} Course : {{=row.course_id.name}}</div>
{{if row.documentx:}}
<div><a href={{=URL('default', 'download', args=row.documentx)}}>Download file</a></div>
{{pass}}
<hr>
{{pass}}