Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当我使用其他模型中的字段时,如何使用“store=True”计算字段?_Python_Python 2.7_Odoo 8_Odoo_Odoo 10 - Fatal编程技术网

Python 当我使用其他模型中的字段时,如何使用“store=True”计算字段?

Python 当我使用其他模型中的字段时,如何使用“store=True”计算字段?,python,python-2.7,odoo-8,odoo,odoo-10,Python,Python 2.7,Odoo 8,Odoo,Odoo 10,我在联系人树视图中有pos_order_total字段。如果store=False,它会被正确计算,但是如果store=True,如果我下了一些POS订单,它就不会被计算。那么,我如何使用store=True实现这一点呢 学说 请看一看奥多的文档 如您所见,您需要添加依赖项来触发计算方法并更新值。在这种情况下,字段value和tax在同一个模型中。因此,如果您使用的是来自同一个模型或与该模型相关的字段,store=True将很好地工作。因此,如果可能的话,应该通过关系连接字段 解决方案 在您的情

我在联系人树视图中有pos_order_total字段。如果store=False,它会被正确计算,但是如果store=True,如果我下了一些POS订单,它就不会被计算。那么,我如何使用store=True实现这一点呢

学说 请看一看奥多的文档

如您所见,您需要添加依赖项来触发计算方法并更新值。在这种情况下,字段value和tax在同一个模型中。因此,如果您使用的是来自同一个模型或与该模型相关的字段,store=True将很好地工作。因此,如果可能的话,应该通过关系连接字段

解决方案 在您的情况下,需要创建一个one2many字段来关联表。检查以下代码是否适用于您:

class ResPartner(models.Model):
    _inherit = 'res.partner'

    pos_order_total = fields.Float(
        string='POS Order Total',
        compute='_compute_pos_order_total',
        store=True
    )

    pos_order_ids = fields.One2many(
        string=u'POS Orders',
        comodel_name='pos.order',
        inverse_name='partner_id',
    )

    @api.multi
    @api.depends('pos_order_ids.amount_total')
    def _compute_pos_order_total(self):
        for partner in self:
            total = 0.0
            for order in partner.pos_order_ids:
                total += order.amount_total
            partner.pos_order_total = total
学说 请看一看奥多的文档

如您所见,您需要添加依赖项来触发计算方法并更新值。在这种情况下,字段value和tax在同一个模型中。因此,如果您使用的是来自同一个模型或与该模型相关的字段,store=True将很好地工作。因此,如果可能的话,应该通过关系连接字段

解决方案 在您的情况下,需要创建一个one2many字段来关联表。检查以下代码是否适用于您:

class ResPartner(models.Model):
    _inherit = 'res.partner'

    pos_order_total = fields.Float(
        string='POS Order Total',
        compute='_compute_pos_order_total',
        store=True
    )

    pos_order_ids = fields.One2many(
        string=u'POS Orders',
        comodel_name='pos.order',
        inverse_name='partner_id',
    )

    @api.multi
    @api.depends('pos_order_ids.amount_total')
    def _compute_pos_order_total(self):
        for partner in self:
            total = 0.0
            for order in partner.pos_order_ids:
                total += order.amount_total
            partner.pos_order_total = total

这是另一种解决方案:

class ResPartner(models.Model):
    _inherit = 'res.partner'

    pos_order_total = fields.Float(
        string='POS Order Total',
        compute='_compute_pos_order_total',
        store=True)

    pos_order_ids = fields.One2many(comodel_name='pos.order',
                                    inverse_name='partner_id',
                                    string='Pos Ordres')


    @api.one
    @api.depends('pos_order_ids')
    def _compute_pos_order_total(self):

        Order_id = self.env['pos.order'].search([('partner_id', '=', self.id)])

        for Order in Order_id:
            total = 0.0
            total += Order.amount_total
        self.pos_order_total = total

这是另一种解决方案:

class ResPartner(models.Model):
    _inherit = 'res.partner'

    pos_order_total = fields.Float(
        string='POS Order Total',
        compute='_compute_pos_order_total',
        store=True)

    pos_order_ids = fields.One2many(comodel_name='pos.order',
                                    inverse_name='partner_id',
                                    string='Pos Ordres')


    @api.one
    @api.depends('pos_order_ids')
    def _compute_pos_order_total(self):

        Order_id = self.env['pos.order'].search([('partner_id', '=', self.id)])

        for Order in Order_id:
            total = 0.0
            total += Order.amount_total
        self.pos_order_total = total

你为什么要储存它?你为什么要储存它?