无法将序列字段添加到继承的 Odoo 模型
Trouble adding a sequence field to inherited Odoo model
我正在尝试向 crm.lead 模型添加一个序列字段。我已经为我之前构建的另一个自定义模块实现了这段代码,没有任何问题。
我添加了新字段
class vox_crm_register(models.Model):
_inherit = 'crm.lead'
name_seq = fields.Char(
string='Registration Reference',
required=True,
copy=False,
readonly=True,
index=True,
default=lambda self: _('New'))
我已经覆盖了创建函数
@api.model
def create(self, vals):
print(vals.get('name_seq'))
if vals.get('name_seq', _('New')) == _('New'):
print('IF is true')
vals['name_seq'] = self.env['ir.sequence'].next_by_code('vox_crm_register.sequence') or _('New')
res = super(vox_crm_register, self).create(vals)
return res
这是我的序列
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="registration_sequence" model="ir.sequence">
<field name="name">Registration Sequence</field>
<field name="code">vox_crm_register.sequence</field>
<field name="prefix">reg</field>
<field name="padding">3</field>
<field name="company_id" eval="False"/>
</record>
</data>
</odoo>
这是视图
<xpath expr="//sheet/group" position="replace">
<div class="oe_title">
<h1><field name="name_seq"/></h1>
</div>
</xpath>
create 函数中打印语句的结果是
None
如果为真
因为它是继承的,所以我必须以某种方式强制它或添加上下文吗???
感谢任何帮助
视图定义中不存在 name_seq
。
来自 constrains 文档:
@constrains
will be triggered only if the declared fields in the decorated method are included in the create
or write
call. It implies that fields not present in a view will not trigger a call during record creation.
您可以推断,如果视图中不存在该字段,则其值将不会出现在 create
或 write
方法中。
编辑:
当你点击保存按钮时,saveRecord函数将被调用到return值被修改的字段名列表,创建方法中将使用相同的列表.
由于 name_seq
字段是只读的,因此它不会出现在创建值中。
我发现了问题,睡眠不足和愚蠢。我已经更改了序列的代码值,并且没有从 Odoo 中删除旧序列。由于序列有 noupdate 标签,它不会创建新序列,但也不会更新。感谢 Kenly 的回复。
我正在尝试向 crm.lead 模型添加一个序列字段。我已经为我之前构建的另一个自定义模块实现了这段代码,没有任何问题。
我添加了新字段
class vox_crm_register(models.Model):
_inherit = 'crm.lead'
name_seq = fields.Char(
string='Registration Reference',
required=True,
copy=False,
readonly=True,
index=True,
default=lambda self: _('New'))
我已经覆盖了创建函数
@api.model
def create(self, vals):
print(vals.get('name_seq'))
if vals.get('name_seq', _('New')) == _('New'):
print('IF is true')
vals['name_seq'] = self.env['ir.sequence'].next_by_code('vox_crm_register.sequence') or _('New')
res = super(vox_crm_register, self).create(vals)
return res
这是我的序列
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<data noupdate="1">
<record id="registration_sequence" model="ir.sequence">
<field name="name">Registration Sequence</field>
<field name="code">vox_crm_register.sequence</field>
<field name="prefix">reg</field>
<field name="padding">3</field>
<field name="company_id" eval="False"/>
</record>
</data>
</odoo>
这是视图
<xpath expr="//sheet/group" position="replace">
<div class="oe_title">
<h1><field name="name_seq"/></h1>
</div>
</xpath>
create 函数中打印语句的结果是
None
如果为真
因为它是继承的,所以我必须以某种方式强制它或添加上下文吗???
感谢任何帮助
视图定义中不存在 name_seq
。
来自 constrains 文档:
@constrains
will be triggered only if the declared fields in the decorated method are included in thecreate
orwrite
call. It implies that fields not present in a view will not trigger a call during record creation.
您可以推断,如果视图中不存在该字段,则其值将不会出现在 create
或 write
方法中。
编辑:
当你点击保存按钮时,saveRecord函数将被调用到return值被修改的字段名列表,创建方法中将使用相同的列表.
由于 name_seq
字段是只读的,因此它不会出现在创建值中。
我发现了问题,睡眠不足和愚蠢。我已经更改了序列的代码值,并且没有从 Odoo 中删除旧序列。由于序列有 noupdate 标签,它不会创建新序列,但也不会更新。感谢 Kenly 的回复。