Odoo 循环遍历订阅行然后将值设置为字段

Odoo loop through a subscription line then set value to field

大家好,我是 python 和 Odoo 开发的新手,我之前使用 Web 界面进行自定义。我试图创建一个 class 到

  1. 向 sale.subscription 模型添加一个字段

subscription_tier = fields.Char(string='Subscription Tier',readonly=True)

哪个有效,但第二部分无效 2. 遍历订阅行以查看客户是否有 silvergold 订阅 然后将其设置为字段 subscription_tier

class subscription_tire_set(models.Model):
    _inherit = 'sale.subscription'

    subscription_tier = fields.Char(string='Subscription Tier',readonly=True)

    @api.depends('recurring_invoice_line_ids.product_id')
    def _compute_release_to_pay(self):
        for n_subscription in self:
            result = None
            for n_subscription_line in n_subscription.recurring_invoice_line_ids:
                if any(n_subscription_line.product_id) == 'gold':
                    
                    result = 'gold'
                    break
                else:
                    result = 'not'

        subscription_tier = result

我可能做错了什么可怕的事情

尝试在订阅中打开任何客户时也会收到此信息

出了点问题! sale.subscription(10,).subscription_tier

提前感谢您的帮助。

对我有用的:

  result = None

  for n_subscription_line in n_subscription.recurring_invoice_line_ids:
                if n_subscription_line.product_id.name == 'gold'
                    result = 'gold'

                    # break

                else:
                    result

  n_subscription.subscription_tier = result 

它不起作用,因为在最后一行中您声明了一个名为 subscription_tier 的变量并将其值设置为 result,您应该将 result 分配给 subscription_tier n_subscription 记录的字段:

@api.depends('recurring_invoice_line_ids.product_id')
def _compute_release_to_pay(self):
    for n_subscription in self:
        # Your code
        n_subscription.subscription_tier = result

编辑:

any 将 return TrueFalse 并且您的表达式 any(n_subscription_line.product_id) == 'gold' 将始终被评估为 False