2014-01-16 26 views
0

我有这样的控制器查询(多列被注释掉)的web2py和列别名

rows=db((c.email_sent == 0) & (c.status=='pending')).select(db.f.first_name #.with_alias('requester_name') , 
# db.t.first_name.with_alias('receiver_name'),db.t.email.with_alias('sendto_email'), 
# db.c.from_id.with_alias('sender_id'),db.c.to_id.with_alias('receiver_id'), 
# db.c.id.with_alias('connection_id') 
,join = 
[db.f.on (db.f.id==c.from_id), 
db.t.on(db.t.id==c.to_id)] 
    ) 

视图有

{{extend 'layout.html'}} 
<table class="table"> 
    {{for row in rows:}} 
    <tr> 
     <td>={{row.first_name}</td> 
    </tr> 
</table> 

,它工作正常。但是,如果我从控制器中删除注释掉的别名,我无法使视图正常工作。我得到一个错误 - “(在Rows对象中有错误)”
函数参数列表是(self =,sqlrows =,linkto = None,upload = None,orderby = None,headers = {},truncate = 16,列= ['f.first_name AS requester_name','t.first_name AS receiver_name','t.email AS sendto_email','c.from_id AS sender_id','c.to_id AS receiver_id','c.id AS connection_id'] ,th_link ='',extracolumns = None,selectid = None,renderstyle = False,cid = None,colgroup = False,** attributes = {}) 很明显,列名无法正确传递。这应该怎么做?

回答

0

如果别名字段,然后在该行中访问该字段时使用别名:

{{=row.requester_name}} 

另一种选择是使用别名跳过 - 他们似乎没有必要。在这种情况下,由于查询涉及连接,因此您可以通过row.tablename.fieldname访问各个字段值。

+0

row.tablename.fieldname没有帮助(使用别名时)。这是什么打印行显示 - <行{'requester_name':u'Jayadevan','_extra':{'f.first_name AS requester_name':'Jayadevan'}}> – Jayadevan

+0

好的,我在控制器中的返回语法是错误的一个新手)。它必须是返回字典(行=行)。我正在做返回行 – Jayadevan

+0

请注意,我建议使用'row.tablename.fieldname'语法,假设你不*使用别名。 – Anthony