Hi,

I am having an issue querying a referenced column using the smartgrid
search widget.

Let's say I have a table defined as follows:

    db.define_table('countries',
        Field('country_name', 'string', unique=True, required=True),
        format='%(country_name)s')

Data
1  Austria
2  Brazil
5  China     etc.

The second table is as follows:

    db.define_table('users',
        Field('user_name', 'string'),
        Field('country', db.countries))

    db.users.country.writeable = False


The controller is as follows:

    def user_list():
        grid = SQLFORM.smartgrid(db.users, linked_tables=['db.countries'])
        return dict(grid=grid)


Using the grid search function, click on the Search field, and select
Country from the drop down field.
Choose = 'China' and Add.
This will result in an error. You would have to search for the numeric ID,
5 in this case.
(Incidentally, the same will occur if you choose ID form the dropdown, but
search for a string instead of a numeric')
<type 'exceptions.ValueError'> invalid literal for int() with base 10:
'BOT'So the question is :
- As in the example, what is the correct way to search for all users from
China?
- Any way to prevent an error if a user enters a string where a numeric is
expected in the search?

NB. I typed in the above code directly into the email, so there may be
typos.

Thanks a lot.

Regards,

Rakesh

-- 



Reply via email to