@@ -224,21 +224,31 @@ func getValuesFromInterface(v interface{}) map[string]interface{} {
224224// Create new model instances.
225225// https://www.odoo.com/documentation/13.0/webservices/odoo.html#create-records
226226func (c * Client ) Create (model string , values []interface {}) ([]int64 , error ) {
227+ var args []interface {}
227228 if len (values ) == 0 {
228229 return nil , nil
230+ } else if len (values ) == 1 {
231+ args = []interface {}{getValuesFromInterface (values [0 ])}
232+ } else {
233+ vv := make ([]interface {}, len (values ))
234+ for i := 0 ; i < len (values ); i ++ {
235+ vv [i ] = getValuesFromInterface (values [i ])
236+ }
237+ args = []interface {}{vv }
229238 }
230- var vv []interface {}
231- for _ , v := range values {
232- vv = append (vv , getValuesFromInterface (v ))
233- }
234- resp , err := c .ExecuteKw ("create" , model , vv , nil )
239+ resp , err := c .ExecuteKw ("create" , model , args , nil )
235240 if err != nil {
236241 return nil , err
237242 }
238243 if len (values ) == 1 {
239244 return []int64 {resp .(int64 )}, nil
240245 }
241- return resp .([]int64 ), nil
246+ r := resp .([]interface {})
247+ ids := make ([]int64 , len (r ))
248+ for i := 0 ; i < len (ids ); i ++ {
249+ ids [i ] = r [i ].(int64 )
250+ }
251+ return ids , nil
242252}
243253
244254// Update existing model row(s).
0 commit comments