Как использовать RPC-запрос в JavaScript с методом поиска в Odoo 11/12? - PullRequest
0 голосов
/ 02 ноября 2018

У меня есть следующий код:

odoo.define('module_name.templates', function(require){
"use strict";

$(document).ready(function() {
    var rpc = require('web.rpc');

    $('#query').click(getProductBySKU);
    function getProductBySKU(){
        var domain = [];
        var args = [domain];

        var res = rpc.query({
            model: 'product.template',
            method: 'search',
            args: args
        }).then(function (products) {
            console.log(product); });
        };
    });
});

С этим кодом он дает мне массив чисел, например. [1,2]. Длина массива равна количеству записей, которые у меня есть, но нет объектов вообще. Если я заменяю домен чем-то вроде [('id', '=', 2)], я получаю сообщение об ошибке "Int объект не может быть подписан".

Итак, мой вопрос : возможно ли получить список объектов из базы данных методом поиска или хотя бы получить поля из указанных записей БД.

Я также пытался использовать метод search_read. Как это:

odoo.define('shift_knob.templates', function(require){
"use strict";

$(document).ready(function() {
    var rpc = require('web.rpc');

    $('#query').click(getProductBySKU);
    function getProductBySKU(){
        console.log("Hello world!");
        var domain = [('id', '=', 2)];
        var args = [domain];

        var res = rpc.query({
            model: 'product.template',
            method: 'search_read',
            args: [[], ['name', 'default_code']]
            /* args: args */
        }).then(function (products) {
            console.log(products); });
        };
    });
});

Я получаю список объектов с именем, кодом по умолчанию, но я могу использовать только идентификатор в качестве идентификатора, а не поля, которые я хочу

1 Ответ

0 голосов
/ 13 июня 2019

Изменение


[('id', '=', 2)];

Для


[ ['id', '=', 2], [] ];

...