[英]Odoo-15. How to disable record deletion (bool field)?
I made all the other entries false if one entry is true.如果一个条目为真,我将所有其他条目设为假。 How do I protect this entry from being deleted?
如何保护此条目不被删除? There must always be at least one entry.
必须始终至少有一个条目。
res.partner.xml res.partner.xml
<odoo>
<record id="view_partner_form_inherit" model="ir.ui.view">
<field name="name">res.partner.form</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="base.view_partner_form"/>
<field name="arch" type="xml">
<xpath expr="//form/sheet/group/group/field[@name='mobile']" position="after">
<field name="is_primary" string='Is primary'/>
</xpath>
<div t-att-class="color + (record.title.raw_value == 1 ? ' oe_kanban_color_alert' : '') + ' oe_kanban_global_click'">
<div style="float: right; margin-top:-25%;">
<xpath expr="//div[hasclass('oe_kanban_details')]" position="inside">
<field name="is_primary" widget="checkbox"/>
</xpath>
</div>
</div>
</field>
</record>
</odoo>
Primary_contact.py Primary_contact.py
from odoo import api, fields, models, _从 odoo 导入 api,字段,模型,_
class PartnerPrimary(models.Model):
_inherit = "res.partner"
is_primary = fields.Boolean(string='Is primary')
@api.constrains('is_primary')
def check_is_primary(self):
if self.is_primary:
contacts_ids = self.parent_id.child_ids.filtered(lambda lm: lm.id != self.id)
for cont in contacts_ids:
cont.is_primary = False
I solved this problem我解决了这个问题
class PartnerPrimary(models.Model):
_inherit = "res.partner"
is_primary = fields.Boolean(string='Is primary')
@api.constrains('is_primary')
def check_is_primary(self):
if self.is_primary:
contacts_ids = self.parent_id.child_ids.filtered(lambda lm: lm.id != self.id)
for cont in contacts_ids:
cont.is_primary = False
def unlink(self):
for delete in self:
if delete.is_primary:
raise UserError(('You cannot delete'))
return super(PartnerPrimary, self).unlink()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.