Web2py查询返回无结果

时间:2014-12-29 17:38:46

标签: python sql web2py

我在Web2py中有2个表

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

当使用表单为客户创建条目时,使用当前登录的用户(创建条目)customer字段中的company_id表中放置一个值,{{1} (来自id表)。这是通过auth_user完成的。

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

我这样做

auth.user_id

在我看来,我有

def viewcustomers():

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

我得到的唯一结果是'无'。

有谁知道最近发生了什么?

2 个答案:

答案 0 :(得分:0)

为什么不让你的控制器的viewcustomers()函数返回一个带有' viewcustomers'作为关键?

def viewcustomers():

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

另外,如果您根据当前客户执行数据库查询,那么应该是session.auth.user.id,而不是auth.user_id吗?

编辑:在下面的对话之后添加' .select()'

答案 1 :(得分:0)

不要使用print来生成HTML输出。 print命令只会打印到控制台。为了执行视图,您的函数必须返回一个字典(因为它,您的函数不会返回任何内容,这就是浏览器显示"无")的原因。

此外,db.mytable(query)语法仅返回第一个匹配记录。如果您想要所有记录,则必须使用db(query).select()语法。

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

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

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