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 >