Function 从主车型odoo 8的one2many价目表中提取一个价格

Function 从主车型odoo 8的one2many价目表中提取一个价格,function,get,openerp,one-to-many,Function,Get,Openerp,One To Many,我们有一个产品质量的三层模型。 模型1是包含产品质量信息的主模型 #------------------------------------------------------------------------------- # product qualities #------------------------------------------------------------------------------- class qualities(models.Model):

我们有一个产品质量的三层模型。 模型1是包含产品质量信息的主模型

#-------------------------------------------------------------------------------
#  product qualities
#-------------------------------------------------------------------------------
class qualities(models.Model):
    _name = 'qualities'
    _description = 'Sheet Qualities'


    name = fields.Char('Quality', required=True, help='Quality name')
    reseller_ids = fields.One2many('qualityinfo', 'product_qual_id', 'Quality Supplier')  
每种质量类型都有多个供应商,通过以下方式连接: 分销商id=fields.One2many('qualityinfo','产品质量id','Quality Supplier')

到目前为止还不错。但是现在我们需要从价格表中选择一个价格,并将其输入到质量中的价格字段中。我们尝试了以下方法,但没有任何结果:

def _get_price(self):
quality_id = self._context.get('product_qual_id' False)
if product_qual_id:
    price = self.env['qualityinfo'].browse(product_qual_id).with_context(pricelist.partnerinfo=self.id).price self.price = price
我需要pricelist.partnerinfo的质量价格来计算总成本。

您可以用于此计算字段。以下是您的模型示例:

class qualityinfo(models.Model):
    _name = 'qualityinfo'
    # ... your fields here
    # value not stored in db. (default flag 'store=False')
    total_price = fieldsFloat('Total price', compute='_compute_total_price')

    @api.multi
    def _compute_total_price(self):
        total_price = 0
        for pricelist in self.pricelist_ids:
            total_price += pricelist.price
        self.total_price = total_price

希望这对你有帮助。

这会让我走上正确的方向。唯一的问题是,我只需要一个价格,取决于最小数量,而不是总数。我知道这有点混乱,因为我提到了“总成本”。在价格表1中,产品具有基于最小数量的多种价格。我只需要一个基于最小数量的价格。@RcCharly在
\u compute\u total\u price
中,您可以创建任何自定义逻辑来计算总价。
class qualityinfo(models.Model):
    _name = 'qualityinfo'
    # ... your fields here
    # value not stored in db. (default flag 'store=False')
    total_price = fieldsFloat('Total price', compute='_compute_total_price')

    @api.multi
    def _compute_total_price(self):
        total_price = 0
        for pricelist in self.pricelist_ids:
            total_price += pricelist.price
        self.total_price = total_price