SQLFORM.grid takes a query as the first argument, and you are passing a
Rows object instead (i.e., you have applied the .select() method to your
query). Just pass in the query without the .select().
Anthony
On Monday, January 9, 2012 6:12:55 AM UTC-5, Rahul wrote:
>
> Hi All,
> Why do I get this error Error - AttributeError: 'Rows' object
> has no attribute '_db'. Please have a look at the code given below.
> Whenever I hit the myfriends url, I get the below issue.
> =============ERROR================
> Ticket ID
> 127.0.0.1.2012-01-09.16-23-52.fb79b661-40af-4431-bdfa-7f1d5d3af482
> <type 'exceptions.AttributeError'> 'Rows' object has no attribute
> '_db'
>
> Version
> web2py™
> (1, 99, 4, datetime.datetime(2011, 12, 14, 14, 46, 14), 'stable')
>
> Python
> Python 2.7.2: C:\Python27\python.exe
>
>
> Traceback
> 1.2.3.4.5.6.7.8.9.10.11.12.
> Traceback (most recent call last):
> File "D:\WEB2PY\web2py\gluon\restricted.py", line 204, in
> restricted exec ccode in environment
> File "D:/WEB2PY/web2py/applications/Build_Connect/controllers/
> default.py", line 735, in <module>
> File "D:\WEB2PY\web2py\gluon\globals.py", line 172, in <lambda>
> self._caller = lambda f: f()
> File "D:/WEB2PY/web2py/applications/Build_Connect/controllers/
> default.py", line 707, in myfriends csv=False, maxtextlength=128,
> paginate=50)
> File "D:\WEB2PY\web2py\gluon\sqlhtml.py", line 1455, in grid db =
> query._dbAttributeError: 'Rows' object has no attribute '_db'
>
> =============
>
> -------Here's the code---------
> My Controller:
>
> #This lists friends
> def myfriends():
> db.friends.id.readable=False
> query = db((db.friends.reguserid==session.logged_in_user_id) &
> (db.friends.status=="Friend")).select(db.friends.friend_name)
> print db._lastsql
>
> fields = (db.friends.id, db.friends.reguserid,
> db.friends.friendid, db.friends.status, db.friends.friend_name,)
> headers ={'friends.id': 'ID',
> 'friends.reguserid': 'ReguserID',
> 'friends.friendid': 'FriendID',
> 'friends.status': 'Status',
> 'friends.friend_name': 'Friend Name',
> }
>
> #default_sort_order = [db.friends.friendid] #,
> db.projects_posts.expected_start_date
>
> links = [lambda row: A(SPAN(_class='icon check'),'View
> Profile',_class='positive button',_title='View this friends profile',
> _href=URL("default","view_friend_profile",args=[row.friendid])),
> lambda row: A(SPAN(_class='icon cross'),'Remove
> Friend',_class='negative button',_title='Remove from friend list',
> _href=URL("default","remove_friend",args=[row.friendid]))]
>
> table = SQLFORM.grid( query=query, #fields=fields,
> #headers=headers, #orderby=default_sort_order,
> user_signature=False, links=links,
> create=False, searchable=False,
> details=False, showbuttontext=False,
> deletable=False, editable=False,
> csv=False, maxtextlength=128, paginate=50)
>
> return dict(table=table)
>
> #View Friends Profile
> def view_friend_profile():
> session.myfriendid = request.args[0]
> #print session.myfriendid
> query = db(db.reguser.id==session.myfriendid).select()
> table = SQLFORM.grid(query=query)
> return dict(table= table)
>
> #Remove Friend from Friends list
> def remove_friend():
> session.myfriendid = request.args[0]
> db((db.friends.reguserid==session.logged_in_user_id) &
> (db.friends.friendid==session.myfriendid) ).update(status='Rejected')
> #print db._lastsql
> return dict()
>
>
> ----x-----------------------
>
> My View: (myfriends.html)
>
> {{extend 'layout.html'}}
> <h3>Friends List</h3>
> <head>
> <link rel="stylesheet" href="{{=URL(r=request,c='static',f='css/
> css3buttons.css')}}" media="all" />
> </head>
> <hr />
> {{=table}}
> -----------x---------------------------------
> My Table in db.py
> reqstatus = ["Friend","Rejected","Sent"]
> db.define_table('friends',
> Field('reguserid'),
> Field('friendid'),
> Field('status', requires=IS_IN_SET(reqstatus)),
> Field('friend_name'),
> )
>
> ----------------------------------------------------------------
>
> I am using - web2py1.99.4 , Win7 and python 2.7
>
> Sincerely, Rahul D
>