odoo 13从`sale.subscription`中的自定义字段创建域

时间:2020-05-17 04:41:17

标签: python odoo odoo-13

他是odoo开发的新手,这可能很简单,但我不知道

我向subscription_tier模型添加了一个新字段sale.subscription


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

    @api.depends('recurring_invoice_line_ids.product_id')
    def _compute_subscription_tire(self):
        # code for computing

        n_subscription.subscription_tier = result 

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


在我的自定义模型中,我添加了

    @api.onchange('user_name')
    def onchange_test_domain_fiedl(self):
        obj = self.search([])
        available_ids = []
        for i in obj:
            available_ids.append(i.user_name.id)

        return {'domain': {'user_name': [&,|,('id', 'not in', available_ids),(('subscription_tier','=','tier_i'),('subscription_tier','=','tier_ii'),('subscription_tier','=','tier_iii'))]}}



    user_name = fields.Many2one('sale.subscription', string='Name')

1 个答案:

答案 0 :(得分:0)

您可以使用域OR,而不是在一个字段上使用多个in,因此可以使用以下域:

['|', ('subscription_tier','=','tier_i'),'|', ('subscription_tier','=','tier_ii'),('subscription_tier','=','tier_iii')]  

可以简化为:

[('subscription_tier','in', ['tier_i', 'tier_ii', 'tier_iii'])]

Computed fields默认情况下不存储,它们是在请求时计算并返回的。设置store=True会将它们存储在数据库中并自动启用搜索。也可以通过设置搜索参数来启用对计算字段的搜索。

尝试将 subscription_tier store属性设置为True以启用搜索。