odoo 13 从 `sale.subscription` 中的自定义字段创建域
odoo 13 create domain from a custom field in `sale.subscription`
你好,我是 odoo 开发的新手,这可能很简单,但我想不通
我向 sale.subscription
模型添加了一个新字段 subscription_tier
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')
您可以使用域 in
运算符,而不是在一个字段上使用多个 OR
,因此以下域:
['|', ('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
以启用搜索。
你好,我是 odoo 开发的新手,这可能很简单,但我想不通
我向 sale.subscription
模型添加了一个新字段 subscription_tier
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')
您可以使用域 in
运算符,而不是在一个字段上使用多个 OR
,因此以下域:
['|', ('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
以启用搜索。