Возможно ли в одном древовидном представлении загружать данные, например. (Задача проекта, Задача проекта, Заказ на поставку), где дата создания = Сегодня.
Пример:
Любое простое решение?
Возможно ли в одном древовидном представлении загружать данные, например. (Задача проекта, Задача проекта, Заказ на поставку), где дата создания = Сегодня.
Пример:
Любое простое решение?
Попробуйте этот пример, верните все из базы данных:
В файле .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>
Результат:
Если вы просто хотите всегда показывать записи о том, что дата создания сегодня, вы можете сделать это.
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)
и теперь модель будет извлекать данные из представления, надеюсь, это то, что вы хотите.
Если вы хотите загрузить данные из одного единственного Model
, вы можете использовать домен действия для фильтрации.
Если вы хотите загрузить данные из трех разных моделей, где их create_date
сегодня, вы можете сделать одну простую модель, например view_mod
, и поместить туда все интересные поля, которые вы хотите просмотреть, а затем для каждой модели вы должны создать соответствующую запись view_mod
, а затем снова вам нужно отфильтровать домен действия, чтобы увидеть все view_mod
записей, созданных сегодня