在多个21树视图上添加默认过滤器-OpenErp自定义模块



我在XML:中添加了这一行

<field name="context">{"search_default_current_year": 1}</field>

但这只适用于它自己的观点。我想要的是即使在many2one视图中也将其设置为默认值。有办法吗?

已编辑代码:搜索视图:

<record id="urdhershpenzim_filter" model="ir.ui.view">
<field name="name">urdhershpenzim.select</field>
<field name="model">urdher.shpenzim</field>
<field name="type">search</field>
<field name="arch" type="xml">
<search string="Kerko Urdhershpenzimi">
<group>
<filter name="draft" icon="terp-document-new" string="Draft" domain="[('state','=','draft')]"/>
<filter name="confirmed" icon="terp-check" string="Konfirmuar" domain="[('state','=','confirmed')]"/>
<filter name="cancel" icon="gtk-cancel" string="Anulluar" domain="[('state','=','cancel')]"/>
<separator orientation="vertical"/>
<filter name="current_year" icon="terp-gtk-media-pause" string="Current Year" domain="['|',('date','&gt;=',time.strftime('%%Y-01-01')),('date','=',False)]" help="Current year"/> <!--commprog-orjada-->
<separator orientation="vertical"/>
<field name="name"/>
<field name="institucion_id"/>
<field name="furnitor_id"/>
<field name="tipi"/>
<field name="date"/>
</group>
<newline/>
<group expand="0" string="Group By..." groups="base.group_extended">
<filter string="State" icon="terp-stock_effects-object-colorize" domain="[]" context="{'group_by':'state'}"/>
</group>
</search>
</field>
</record>

行动:

<record id="action_urdhershpenzimi" model="ir.actions.act_window">
<field name="name">Urdhershpenzimi</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">urdher.shpenzim</field>
<field name="view_type">form</field>
<field name="view_model">tree,form</field>
<field name="domain">[('institucion_lloji','=',True)]</field>
<field name="context">{"search_default_current_year":1}</field>
<field name="search_view_id" ref="urdhershpenzim_filter"/>
</record>

如果我错了,请纠正我,但我认为你的问题是:

如何强制"某个字段"始终具有相同的域?

答案是可以在字段定义上设置domain值(在Python中)


正如您所说,下面的context有效,但仅用于限制字段在一个特定视图上的选项。

<field name="context">{"search_default_current_year": 1}</field>

从您发布的搜索视图中,我们可以确定过滤器将以下域应用于字段。域基本上说"只允许选择今年1月1日或之后date值为的任何记录没有选择日期

<filter name="current_year"
domain="['|',('date','&gt;=',time.strftime('%%Y-01-01')),('date','=',False)]"/>

正如我所提到的,相同的域可以应用于字段的Python定义,并且该字段将在任何地方应用该域。

from datetime import datetime
from odoo import fields, models

SomeClass(models.Model):
_name = 'some.class'
_description = 'Some Class that has "urdher.shpenzim" as a Many2one field'
urdher_shpenzim_id = fields.Many2one(
'urdher.shpenzim`,
domain=['|', ('date', '=', False),
('date', '>=', '{}-01-01'.format(datetime.now().year))])

您可能需要对日期的format命令进行一些更改,但想法是一样的。

请务必查看字段和域上的Odoo文档以了解更多详细信息。

最新更新