我在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
我得到的唯一结果是'无'。
有谁知道最近发生了什么?
答案 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
显示该对象。