Получить данные от другой модели odoo 9

Возможно ли в одном древовидном представлении загружать данные, например. (Задача проекта, Задача проекта, Заказ на поставку), где дата создания = Сегодня.

Пример:

Пример

Любое простое решение?


person Pointer    schedule 28.06.2017    source источник
comment
Не могли бы вы объяснить это подробнее?   -  person Chavada Viki    schedule 28.06.2017
comment
@Pointer Вы хотите найти все данные, созданные за день, в виде дерева?   -  person khelili miliana    schedule 28.06.2017
comment
@KHELILIHamza Лучшее решение - отображать имя, дату и, возможно, имя модуля в виде дерева, после щелчка перейти к форме этого модуля.   -  person Pointer    schedule 28.06.2017
comment
@VikiChavada Пример: postimg.org/image/eaq5d53qt   -  person Pointer    schedule 28.06.2017
comment
@Pointer Я думаю, вы можете добиться этого, ссылаясь на код Cherif Odoo для экранного отчета, а также вы можете добавить кнопку, чтобы открыть эту конкретную запись.   -  person Chavada Viki    schedule 29.06.2017


Ответы (3)


Попробуйте этот пример, верните все из базы данных:

В файле .py добавьте следующий код:

class CustomReport(models.Model):
    _name = "my.report"
    _description = "my report"
    _auto = False


    name = fields.Char(string='Name', readonly=True)

    def init(self, cr):
        tools.drop_view_if_exists(cr, self._table)
        cr.execute("""CREATE or REPLACE VIEW my_report as 
                        SELECT
                        id,
                        concat(name,' | ', description) as name
                        from project_task 
                        UNION ALL 
                        SELECT 
                        id,
                        concat(name,' | ', amount_total) as name
                        from purchase_order
                        UNION ALL 
                        SELECT 
                        id,
                        concat(number,' | ', residual) as name 
                        from account_invoice
                        """)

В файле .xml добавьте:

<?xml version="1.0" encoding="utf-8"?>
<odoo>
    <record id="view_my_report_tree" model="ir.ui.view">
        <field name="name">my.report.tree</field>
        <field name="model">my.report</field>
        <field name="arch" type="xml">
            <graph string="Name" type="bar">
                <field name="id" type="row" />
                <field name="name" type="row" />
            </graph>
        </field>
    </record>


    <record id="action_my_report" model="ir.actions.act_window">
        <field name="name">Name</field>
        <field name="res_model">my.report</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree</field>
    </record>

    <menuitem name="My report" action="action_my_report" id="menu_my_report"/>

</odoo>

Результат:

введите здесь описание изображения

person user_odoo    schedule 29.06.2017

Если вы просто хотите всегда показывать записи о том, что дата создания сегодня, вы можете сделать это.

1- сначала в бэкэнде, чтобы использовать древовидное представление или любое другое представление, вы должны создать для него одну и только одну модель.

2- когда вам нужно показать более одной модели в одном и том же древовидном представлении или, как мы можем сказать, вы хотите показать результат запроса.

3- создать модель, которая создает представление в базе данных вместо таблицы, означает, что модель извлекает данные из представления (запроса) в базе данных.

Пример: см. модуль \addons\account\report\account_invoice_report.py

Чтобы модель не создавала таблицу в базе данных.

    _name = 'view.name'
    _auto = False 

Затем, чтобы создать представление, переопределите метод:

    # in odoo 10.0
    @api.model_cr
    def init(self):
        # drop the view first 
        tools.drop_view_if_exists(self.env.cr, self._table)

        # create the view.
        self.env.cr.execute("""CREATE or REPLACE VIEW %s as (
          you query here.
        )""" % self._table)

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

person Charif DZ    schedule 28.06.2017

Если вы хотите загрузить данные из одного единственного Model, вы можете использовать домен действия для фильтрации.

Если вы хотите загрузить данные из трех разных моделей, где их create_date сегодня, вы можете сделать одну простую модель, например view_mod, и поместить туда все интересные поля, которые вы хотите просмотреть, а затем для каждой модели вы должны создать соответствующую запись view_mod, а затем снова вам нужно отфильтровать домен действия, чтобы увидеть все view_mod записей, созданных сегодня

person Dachi Darchiashvili    schedule 28.06.2017
comment
Tnx для ответа, любой онлайн-пример? - person Pointer; 28.06.2017