As I recall, you have more than one reference field, but looks like you are 
only converting one of them. You'll need to do some debugging to figure out 
exactly which field or fields are generating errors, and then make the 
appropriate corrections.

On Sunday, February 2, 2014 4:21:37 PM UTC-5, Avi A wrote:
>
> getting this error: 
>
> ValueError: invalid literal for long() with base 10: 'ergergrg'
>
>
>     t = db.t_tests_results
>     def POST(**post_params):
>         if db(db.auth_user.api_key == post_params['api_key']).count():
>             #post_params['f_test'] = db(db.t_tests.f_test_name ==
>              #                  post_params['f_test']).select(
> db.t_tests.id).first().id
>             #post_params['f_project'] = db(db.t_projects.f_project_name ==
>              #                  post_params['f_project']).select(
> db.t_projects.id).first().id
>             post_params['f_platform'] = db(db.t_types.f_platform_name ==
>                                 post_params['f_platform']).select(
> db.t_types.id).first().id
>             #post_params['f_device'] = db(db.t_devices.f_device_name ==
>              #                  post_params['f_device']).select(
> db.t_devices.id).first().id
>
>             return t.validate_and_insert(**t._filter_fields(post_params))
>         else:
>             raise HTTP(400)
>     return locals()
>
>
> On Saturday, February 1, 2014 11:24:02 PM UTC+2, Avi A wrote:
>>
>> Yes, that's what I want.
>> I'll give it a try , thanks.
>>
>> On Saturday, February 1, 2014 10:30:28 PM UTC+2, Anthony wrote:
>>>
>>> Without the ability to post data to reference fields it's a problem to 
>>>> achieve it. just posting the reference data as strings won't allow me to 
>>>> make these filters, unless I will insert them into tables after posting to 
>>>> the tests results table. (I think).
>>>>
>>>
>>> Keep in mind, a reference field references an entire record in another 
>>> table, not just a particular string field in that table. In general, the 
>>> referenced table may not even include a string field that contains unique 
>>> values, so you couldn't reference a particular record simply by specifying 
>>> a single string.
>>>
>>> I'm not sure I completely follow your data model, but for example, is 
>>> the f_platform field a reference to the db.t_types table (which itself 
>>> contains an f_platform_name field)? Is it the case that you want users to 
>>> be able to specify an f_platform_name string and have that converted to the 
>>> appropriate record ID of the t_types table so the ID can be stored in the 
>>> f_platform field? If so, you just need to write the code to do that:
>>>
>>> post_params['f_platform'] = db(db.t_types.f_platform_name ==
>>>                                post_params['f_platform']).select(db.
>>> t_types.id).first().id
>>>
>>> That will use the string value of f_platform to look up the record ID in 
>>> db.t_types, and then change post_params['f_platform'] to that record ID. 
>>> You could do something similar for any other fields that need to be looked 
>>> up/converted.
>>>
>>> Anthony
>>>
>>>

-- 
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