答案 0 :(得分:2)
如果您只是希望始终显示今天创建日期的记录,您可以执行此操作。
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)
现在模型将从视图中提取数据,希望这是你想要的。
答案 1 :(得分:1)
如果您要从单个Model
加载数据,则可以使用操作域进行过滤。
如果您想从今天create_date
所在的三个不同模型加载数据,您可以创建一个简单的模型,例如view_mod
,并将所有有趣的字段放在那里,然后查找您应该为每个模型创建相应的view_mod
记录,然后再次需要使用操作域进行过滤,以查看今天创建的所有view_mod
条记录
答案 2 :(得分:1)
试试这个例子,从数据库中返回all:
在.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>
Resault: