コンテンツへスキップ
メニュー
この質問にフラグが付けられました
4 返信
8297 ビュー

Hello together,


i tried to call a python method from javascript site to pass the data of a form view to javascript.

The rpc call is working fine.

However wenn i try to pass the data of the view to Javascript i get false instead of the data-entry.


Console output:

{'employees': [{'id': False, 'lastName': False}, {'id': False, 'lastName': False}, {'firstName': 'Peter', 'lastName': 'Jones'}]}


Test method: 

 @api.model

    def test(self):

        data = {    "employees":[

                                {"id": self.startpoint_id.id, "lastName": self.startpoint_id.name},

                                {"id": self.endpoint_id.id, "lastName": self.endpoint_id.name},

                                {"firstName": "Peter", "lastName": "Jones"}

                                ],

                    "fruit": "Apple",

                    "size": "Large",

                    "color": "Red"

                }

        json_data = json.dumps(data)

        return json_data


RPC call:

 rpc.query({model: 'selection.menu', method: 'test',

            }).then(function(data){

                console.log('works');

                console.log(data);

});


What am I missing here!?
Any help would be much appreciated

アバター
破棄

Please be more accurate about what you mean with "pass the data of the view to Javascript"?, show the code that do that because otherwise it's not clear what are you trying to do

最善の回答

Hi,

Try like below

rpc.query({
model: 'ir.cron',
method: 'search_read',
domain: [ ],
args: [ ],
}).then(function (data) {});

In the above case we can get all the data from the ir.cron inside the function

rpc.query({
'model': 'ir.cron',
'method': 'run_scheduled_actions',
'args': [ ],
});

Python:

def run_scheduled_actions(self):

In the above case we can get all data from the ir.cron in python self.If you want to filter the data use 'args'.

Regards

アバター
破棄
著作者 最善の回答

@MUHAMMAD Imran Yes var rpc = require('web.rpc'), is integrated in the JS File



To clearify the purpose of this program snippet: 

I have defined a form view to select data from contacts ('res.partner'). Out of this data selection i want to build a json file which contains data and geolocation. Therefore i writted a Python-Method to prepare the data. As next step i want to call the Python method from Javascript to retrieve the Jsondata to JS . Which alt last should be integrated into a Javascript Map Framework.

The testmethod above was only written to check if the orm mapping is working correctly.

Model of the Module

class SelectionMenu(models.Model):

    _name = 'selection.menu'

    _description = 'Run training'


    name = fields.Char(string='Name', required=True, index=True, default=lambda self: ('New'))

    contact_ids = fields.Many2many('res.partner', string="Contacts", required=True)

    startpoint_id = fields.Many2one('res.partner', string="Startpoint")

    endpoint_id = fields.Many2one('res.partner', string="Endpoint")

アバター
破棄
最善の回答

Have you included

var rpc = require('web.rpc');

rpc.query({ model: 'model.name', method: 'method_name', args: [{ 'arg1': value1, 'arg2': value2, }] }).then(function (returned_value) { // do something }
アバター
破棄
最善の回答

Your code, looks everything  fine.

You can debug python test method is called. (using print statement in test method).

selection.menu object is another model defined add model name and method name.

Example: rpc.query({model: 'model_name.selection.menu', method: 'test', ..............


アバター
破棄
関連投稿 返信 ビュー 活動
1
6月 25
3920
2
11月 22
6176
1
6月 22
8187
1
9月 21
3100
0
8月 21
95