【问题标题】:Web2py Query Returning No ResultWeb2py 查询没有返回结果
【发布时间】:2015-02-25 21:52:46
【问题描述】:

我在 Web2py 中有 2 个表

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

当使用表单为客户创建条目时,使用当前登录的用户(创建条目)id(来自 @987654326 @ 桌子)。这是通过auth.user_id 完成的。

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

我正在这样做

def viewcustomers():

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

在我看来,我有

{{=viewcustomers}}

我得到的唯一结果是“无”。

有人知道怎么回事吗?

【问题讨论】:

    标签: python sql web2py


    【解决方案1】:

    为什么不让控制器的 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.auth.user.id,而不是 auth.user_id?

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

    【讨论】:

    • 通过添加 return dict(viewcustomers = rows) 行,它似乎正在工作。杰出的。但是,当表中有更多结果时,它只返回一个结果。 @Boa,你知道如何让它显示多个结果吗?
    • @user2073336 - 尝试将上面的“rows = ...”行替换为:“rows = db.customer(db.customer.company_id == auth.user_id).select()” .
    • 注意,auth.user_idsession.auth.user.id 相同(尽管前者将在没有 session.auth.user.id 的情况下简单地返回 None 而不是引发异常)。
    • @Anthony - 谢谢 - 太棒了。如果我早点知道的话,我会省去很多打字、复制和粘贴的工作!
    【解决方案2】:

    不要使用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 显示。

    【讨论】:

      猜你喜欢
      • 2016-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多