Odoo 12: как использовать значения формы в методах @api.model

#javascript #python #odoo #odoo-12

#javascript #python #odoo #odoo-12

Вопрос:

Я новичок на форуме.
В настоящее время я работаю с Odoo 12, и у меня возникли некоторые проблемы с связью модели Odoo с моим виджетом Javascript. Шаг за шагом …
1. Я создаю виджет, который показывает некоторые диаграммы Google, и единственный способ, который я нашел, это показать код QWeb в пользовательском представлении и назначить виджет полю символа.
2. Я добился хорошего подхода, используя rpc в моей функции start:, используя rpc и получая данные из модуля.
3. ПРОБЛЕМА:
мне нужно отобразить два поля даты в форме и использовать эти даты в качестве интервала для моих диаграмм Google: Как я могу получить значения даты в моей функции @api.model
??
Функция может считывать только результирующий набор всей таблицы, когда я пытаюсь получить результат (self.init_date), установленный в поле, я всегда получаю «False»
Извините, я не могу опубликовать код сегодня, но в понедельник я опубликую его, если никто не сможет дать мне ответ.
Большое вам спасибо!

Ответ №1:

api.model Декоратор предоставляет вам доступ к методам модели, но не к записям, поэтому их можно вызывать, когда в модели нет записей (см. https://www.odoo.com/documentation/12.0/reference/orm.html#module-odoo.api ).

Если метод, который вы написали, предназначен для постоянного получения записи, просто удалите api.model декоратор.

Ответ №2:

Привет, попробуй использовать что-то вроде этого

 from odoo import api,models, fields, _

class MyCustomModel(models.Model):
    _name = "my.custom.model"

    #... some fields
    date1 =  fields.Date(string="Date 1")
    date2 =  fields.Date(string="Date 2")

    @api.model
    def my_custom_func(self):
        # read all data in table
        all_records = self.env['my.custom.model'].search([])
        for rec in all_records:
            print(rec.date1, rec.date2)
  

это простой пример доступа к date1 и date2 для всех записей