序列域Odoo

2024-10-06 09:48:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我想添加一个具有以下语法的序列字段"name""Alerte/date_creation/000x" 它将像:

"Alerte/14-07-2021/0001"
"Alerte/14-07-2021/0002"...

下面是我的python代码:

class StockAlert(models.Model):
    _name = "stock.alert"
    _inherit = ['mail.thread', 'mail.activity.mixin']
    _rec_name = "name"

    name = fields.Char(string="Nom",default="New")
    date_creation = fields.Date("Date de création",default=datetime.now().strftime('%Y-%m-%d'))```


Tags: 代码namedefaultfieldsdatemodelmodels语法
1条回答
网友
1楼 · 发布于 2024-10-06 09:48:13

有两种可能是通过自己的代码(坏主意)或使用ir.sequence自行管理的

在这两种情况下,您将使用create方法

自我管理

@api.model
def create(self, values):
    res= super(YourClass, self).create(values)
    res.write({name : f'Alerte/{current_date}/{res.id}'})
    return res

此逻辑起作用,但您使用了2个请求来执行此操作1个插入和1个更新

使用红外序列

首先在xml文件中创建ir.sequence:

    <record id="seq_stock_alert" model="ir.sequence">
        <field name="name">Stock alert sequence</field>
        <field name="code">seq.stock.alert</field>
        <field name="prefix">Alerte/%(y)s-%(month)s-%(day)s/</field>
        <field name="padding">3</field>
    </record>

python中的下一步

@api.model
def create(self, values):
    values['name'] = self.env['ir.sequence'].next_by_code('seq.stock.alert') or _('New')
    return super(YourClass, self).create(values)
    

相关问题 更多 >