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.