发布的内容都是一些自己开发过程中遇到的问题或者整理的笔记,有不足之处欢迎各位前辈指正
xml数据标色和隐藏
<!-- views.xml -->
<field name="arch" type="xml">
<tree string="Todo" decoration-danger="is_expired">
<field name="name"/>
<field name="deadline"/>
<field name="is_done"/>
<field name="is_expired" invisible="True"/>
</tree>
</field>
所有颜色
给action下拉选项中添加按钮
<record id="model_sale_contract_action_server" model="ir.actions.server">
<field name="name">批量复制</field>
<field name="type">ir.actions.server</field>
<field name="model_id" ref="model_sale_contract"/> <!--在哪里model中添加, .换成_ -->
<!--<field name="binding_model_id" ref="waste.model_sale_contract"/>-->
<field name="state">code</field>
<field name="code">
action = model.contract_copy(env.context.get("active_ids"))
</field>
</record>
search
compute字段没有store=True时, 数据库不保存字段,在其他地方domian的时候无效,这时候可以写个search
is_expired = fields.Boolean(compute='_compute_is_expired', search='_search_is_expired', string="是否过期")
def _search_is_expired(self, operator, value):
if operator != '=':
raise ValidationError('只接受“=”符号')
else:
if value == False:
return [('status', '!=', 'no_verified'), '|', ('record_year', '=', fields.date.today().year),
('validity_time', '>', fields.date.today())]
else:
return ['!', '&', ('status', '!=', 'no_verified'), '|', ('record_year', '=', fields.date.today().year),
('validity_time', '>', fields.date.today())]
# 以下domain好像直接取反就行,有待观察
# ['|',('status', '=', 'no_verified'), '&', ('record_year', '!=', fields.date.today().year),
# ('validity_time', '<=', fields.date.today())]
# 调用
(is_expired', '=', False)
sorted
records = self.sorted(key=lambda x: (-x.id, x.name))