Web2py查询返回No Resu

2024-10-03 13:29:45 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Web2py中有两张桌子

  • auth_user(标准表)
  • customer(我定义了这个表)

当使用表单为customer创建条目时,将使用当前登录用户(创建条目)id(来自auth_user表)将一个值放入customer字段中的customer表中。这是通过auth.user_id完成的。在

现在,我试图使用当前登录用户的auth.user_id查询customer表,以提取当前登录用户创建的所有条目。在

我在做这个

def viewcustomers():

    rows = db.customer(db.customer.company_id == auth.user_id)
    print rows

在我看来,我

^{pr2}$

我得到的唯一结果是“没有”。在

有人知道发生了什么事吗?在


Tags: 用户authid表单db定义def条目
2条回答

不要使用print来生成HTML输出。print命令将直接打印到控制台。为了执行视图,您的函数必须返回一个字典(实际上,您的函数不返回任何内容,这就是为什么浏览器显示“None”)。在

另外,db.mytable(query)语法只返回第一个匹配的记录。如果需要所有记录,则必须使用db(query).select()语法。在

所以,你的函数应该是这样的:

def viewcustomers():
    rows = db(db.customer.company_id == auth.user_id).select()
    return dict(viewcustomers=rows)

注意,如果您像您一样在视图中插入Rows对象,默认情况下它将通过SQLTABLE显示。在

为什么不让控制器的viewcustomers()函数返回一个以“viewcustomers”为键的字典?在

def viewcustomers():

  rows = db.customer(db.customer.company_id == auth.user_id).select()
  return dict(viewcustomers = rows) # or whatever instead of 'rows'

另外,如果您基于当前客户执行db查询,那么应该是用户.session.id,而不是身份验证用户\u id?在

编辑:在下面的对话之后添加了“.select()”。在

相关问题 更多 >