2013-12-22 43 views
0

顯示來自多個表中的相關記錄,我有3個表定義:訪問和使用的web2py

db.define_table('image', 
Field('title', unique=True,length=200), 
Field('file', 'upload'), 
format = '%(title)s') 

db.define_table('author', 
Field('name', unique=True,length=100), 
Field('type'), 
format = '%(name)s') 

db.define_table('post', 
Field('image_id', 'reference image'), 
Field('author_id', 'reference author'), 
Field('email'), 
Field('body', 'text')) 

我似乎能夠訪問「上崗」表如下

​​

不過,我需要獲取表格「圖片」中的相關記錄,並將圖片和文字顯示在網頁上。我該怎麼做?

回答

0

如果沒有很多的記錄,你可以使用遞歸選擇:

{{for post in posts:}} 
{{=IMG(_src=URL('default', 'download', args=post.image_id.file))}} 
... 
{{pass}} 

post.image_id.file會導致額外的選擇對每個崗位,以便檢索的文件名。如果有很多記錄,這反而是更有效地做一個加盟:

posts = db((db.post.image_id == db.image.id) & qry).select(*sel) 
視圖

然後:

{{=IMG(_src=URL('default', 'download', args=post.image.file))}} 

其實是很常見的名字引用域一樣的表(而不是追加「_id」)。例如: - 這樣你就可以改變在控制器中使用的方法,而無需更改視圖代碼

Field('image', 'reference image') 

在這種情況下,在視圖中的代碼將是否使用連接或遞歸選擇是post.image.file