在One2many字段中创建的数据也可用作其他模块上的数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在One2many字段中创建的数据也可用作其他模块上的数据相关的知识,希望对你有一定的参考价值。

我希望每次在One2many字段上创建数据,同时我希望它在我的maintenance.equipment上保存为数据。我试图在插件中找到其他模块的解决方案,但我还没有找到答案。

情况是,在验证我的产品中的货件之前,我需要在其上输入序列号。我同时为该产品创建的每个序列号都用作我的设备名称。

this is the picture for the scenario

而那个序列号是sample1010,我需要它在模块维护设备中成为我的设备名称。我希望它能在我的设备上显示。

my equipment module

我所教的只是我需要做的就是创建像这样的Many2one和One2many字段

class StockPackOperation(models.Model):
    _inherit = 'stock.pack.operation'

    lines_ids = fields.One2many('maintenance.equipment', 'lines_id')
    sample = fields.Char(string="Sample")

class MaintenanceEquipment(models.Model):
    _inherit = 'maintenance.equipment'

    lines_id = fields.Many2one('stock.pack.operation')

但没有发生。请提供任何帮助或建议或建议。我需要这样做。感谢建议大师。我是odoo的新手。

答案

这可以通过继承stock.pack.operation.lot类来实现,因为输入的序列号存储在此类中,包含lot_name(如果是传入的货件)和lot_id(如果是传出货物)。

您不需要关心出货,因为在出​​货货物中我们选择已有的序列号。 class StockPackOperationLot(models.Model):_ inherit ='stock.pack.operation.lot'

@api.model
def create(self, vals):
    res = super(StockPackOperationLot, self).create(vals)
    if vals.get('lot_name'):
        self.env['maintenance.equipment'].create({'name': vals.get('lot_name')})
    return res

@api.multi
def write(self, vals):
    if vals.get('lot_name'):
        lot_name = self.lot_name
        equipment_id = self.env['maintenance.equipment'].search([('name', '=', lot_name)])
        res = super(StockPackOperationLot, self).write(vals)
        equipment_id.name = vals.get('lot_name')
        return res
    else:
        return super(StockPackOperationLot, self).write(vals)

要使此功能正常工作,您需要确保设备名称是唯一的,否则您需要在每个stock.pack.operation.lot记录中存储相关设备ID,以便在用户编辑序列号时,设备也会更新,当设备名称没有唯一约束时。

希望这可以帮助你......

以上是关于在One2many字段中创建的数据也可用作其他模块上的数据的主要内容,如果未能解决你的问题,请参考以下文章

在 unix (linux/osx) 中创建的符号链接是不是仍然可以在 Windows 中工作?

闪亮的应用程序模块:使用传单提取在服务器函数中创建的输入

如何使在 ddply 中创建的对象在函数外部可用(在全局环境中)?

Django Annotate - 我可以将在 annotate 中创建的字段用于在 annotate 中创建的另一个字段吗?

如何在odoo 使用one2many

当我引用其他表时,如何保存在 Access 2003 中的表单中创建的数据?