<type 'exceptions.AttributeError'> 'Row' object has no attribute 'unknown' 
Version web2py™ Version 2.7.4-stable+timestamp.2013.10.14.15.16.29
Traceback 

Traceback (most recent call last):
  File "/home/eduardo/PycharmProjects/gblog/web2py/gluon/restricted.py", line 
217, in restricted
    exec ccode in environment
  File 
"/home/eduardo/PycharmProjects/gblog/web2py/applications/gblog/controllers/admin.py"
 <http://127.0.0.1:8000/admin/default/edit/gblog/controllers/admin.py>, line 
19, in <module>
  File "/home/eduardo/PycharmProjects/gblog/web2py/gluon/globals.py", line 372, 
in <lambda>
    self._caller = lambda f: f()
  File 
"/home/eduardo/PycharmProjects/gblog/web2py/applications/gblog/controllers/admin.py"
 <http://127.0.0.1:8000/admin/default/edit/gblog/controllers/admin.py>, line 
13, in posts
    grid = SQLFORM.grid(db.Post)
  File "/home/eduardo/PycharmProjects/gblog/web2py/gluon/sqlhtml.py", line 
2374, in grid
    value = row[str(field)]
  File "/home/eduardo/PycharmProjects/gblog/web2py/gluon/dal.py", line 7062, in 
__getitem__
    raise ae
AttributeError: 'Row' object has no attribute 'unknown'


it only fails with sqlgrid, Im using that field in another view and works 
flawlessly. 

db.y


timestamp = db.Table(db, 'timestamp',
                    Field('created_on', 'datetime', default=request.now,writable
=False, readable=False),
                    Field('created_by', db.auth_user, 
default=auth.user_id,writable
=False, readable=False),
                    Field('updated_on', 'datetime', update=request.now,writable
=False, readable=False),
                    Field('updated_by', db.auth_user, 
update=auth.user_id,writable
=False, readable=False))

db.define_table("Post",
                Field("title", label="Title"),
                Field("body", "text", label="Content"),
                timestamp
                )

db.define_table("Comment",
                Field("author", default="anonymous", label="Author"),
                Field("body", label="Content"),
                Field("post_id", "reference Post", writable=False, readable=
False),
                timestamp
                )

db.define_table("Category",
                Field("title", label="Title"),
                Field("parent_id", "reference Category", default=None),
                timestamp
                )

db.define_table("Post_in_category",
                Field("post_id", "reference Post"),
                Field("category_id", "reference Category"),
                timestamp
                )

def get_category_list(post_id):
    category_id_list =  db(db.Post_in_category.post_id == post_id).select(db
.Post_in_category.category_id)
    category_list = []
    for category_id in category_id_list:
        category_list.append(db.Category[category_id["category_id"]])
    return category_list

db.Post.category_list = Field.Virtual(
    lambda row: get_category_list(row.Post.id)
)




On Friday, November 22, 2013 12:37:18 AM UTC-4, Tim Richardson wrote:
>
>
>
> On Thursday, November 21, 2013 11:29:36 PM UTC+11, Eduardo Cruz wrote:
>>
>> I does not work, sadly.
>>
>
> Where does it fail? 
>
> is the id passed to the function ok? 
>
>
>  
>
>> On Wednesday, November 20, 2013 6:52:56 PM UTC-4, Tim Richardson wrote:
>>>
>>> Also, my experience with virtual fields is limited to returning 
>>> non-iterable types, not lists. 
>>>
>>> On Thursday, November 21, 2013 9:48:57 AM UTC+11, Tim Richardson wrote:
>>>>
>>>> I can't see what's wrong.
>>>> Why don't you simply pass the id
>>>> (ie lambda row: get_category_list(row.Post.id)
>>>>
>>>>>  
>>>>
>>>> and then use breakpoints to see if that is working as you expect
>>>>
>>>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to