Hi, I have the same problem.
I defined the following tables:
db.define_table('t_questions',
Field('f_question', type='text', label=T('Question')),
Field('f_question_number', type='integer', label=T('Question number')),
Field('f_lecture', type='reference t_activities', label=T('Lecture')),
auth.signature, format='%(f_question)s',
plural="Questions",
migrate=settings.migrate)
db.define_table('t_answers',
Field('f_question', type='reference t_questions', label=T('Question')),
Field('f_option', type='string', label=T('Option')),
Field('f_points', type='integer', label=T('Points')),
Field('f_iscorrect', type='boolean', label=T('Is Correct')),
auth.signature, format='%(f_option)s',
plural="Answers",
migrate=settings.migrate)
and then defined the smartgrid:
questions = SQLFORM.smartgrid(db.t_questions, linked_tables=['t_answers'],
fields = dict(t_questions =(db.t_questions.f_question_number,
db.t_questions.f_lecture, db.t_questions.f_question)),
field_id = (db.t_questions.id),
orderby = dict(t_questions =
[db.t_questions.f_lecture|db.t_questions.f_question_number]),#|db.t_questions.f_question_number,
csv = False,
deletable = True,
editable = True,
create = True,
paginate=100
)
When the smartgrid is displayed I click on edit a question, then in the
edit page I click on "Answers", it shows the anwers for that question and
when I click in "View "Edit" or "Delete" it gives me an error:
AttributeError: 'Row' object has no attribute 'f_option'
That's because those buttons make reference to:
https://mysite/app/controller/questions/t_questions/t_answers.f_question/6/view/
t_questions/14?_signature=c93a35518f7922dd8e85a6b1dace5b797eb5a394
which is wrong as it must be "t_answers/14"
Any idea?
Thank you very much.
Regards
On Wednesday, May 15, 2013 10:47:53 PM UTC+2, bapster wrote:
>
> *Running on latest web2py v2.4.6 from trunk (but also occurs in Version
> 2.4.6-stable+timestamp.2013.04.06.17.37.38).*
>
> When traversing linked tables with a smartgrid, the breadcrumbs code in
> sqlhtml.py is causing an error, due to a mixup of the table/record
> association.
>
> The problem is easily duplicated by creating a new app with the wizard:
>
> 1. Define table: car_type
> - Field: desc string
> 2. Define table: car
> - Field: name string
> - Field: car_type_id *reference* car_type
> 3. Run the application.
> 4. Click the "Car Type" menu link, which invokes SQLFORM.smartgrid for
> the car_type table.
> 5. In the car_type grid, on one of the records, click the "T cars"
> link. This pulls up a grid for the cars table, filtered for the selected
> car_type.
> 6. In the car grid, click one of the "Car Type Id" links.
> - This will result in the error: <type 'exceptions.AttributeError'>
> 'Row' object has no attribute 'f_name'
>
> Causing this error is a call to format() in the breadcrumbs code of
> sqlhtml.py, line 2662. The table argument being referenced for the format
> string is *car*, but the row argument is a *car_type* record.
>
> Note that I've been working around this issue by specifying my
> define_table format argument like this (hack):
> format=lambda r: r.get('f_name') or ('#' + str(r.id))
>
--
---
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 [email protected].
For more options, visit https://groups.google.com/groups/opt_out.