To get the id, return t.validate_and_insert(...).id.

Anthony

On Monday, February 3, 2014 8:57:38 AM UTC-5, Avi A wrote:
>
> Alright, it's awesomely works now. :)
> (just fyi the r.content returns this and not the id of newly created 
> record.:)
> >>> r.content
> 'errorsid'
>
> Thanks again .
>
> On Monday, February 3, 2014 2:31:00 AM UTC+2, Anthony wrote:
>>
>> 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