如何从相关字段中读取所有处于“草稿”状态的sale.order对象?
我试过这个:
class account_budget_bsi(models.Model):
_name = 'account.budget.bsi'
_inherit = ['crossovered.budget', 'sale.order', 'stock.location', 'stock.move', 'purchase.order']
sale_order = fields.Many2one('sale.order')
sales_bsi = fields.Many2one('sale.order' , related="sale_order.state.draft", string="Sales Planned")
但它似乎没有起作用。
关于如何实现这一目标的任何想法?
我的意思是,问题是所有的销售订单都必须处于'草稿'状态,我知道也许Many2one相关领域不起作用,因为'州'是一个选择,但无法弄清楚如何像这样加载它。
答案 0 :(得分:1)
这不是相关领域的用途。你应该用计算字段来实现这一点:
sales_bsi = fields.One2many('sale.order',
compute="_compute_sales_bsi")
@api.one
def _compute_sales_bsi(self):
self.sales_bsi = self.env['sale.order'].search([('state', '=', 'draft')])
这样做是它在sale.order
模型中搜索处于草稿状态的记录,并将它们添加到字段sales_bsi
中。如果我理解正确,那就是你想要实现的目标。
答案 1 :(得分:1)
如何使用related
相关仅用于加载另一个对象字段的实际值。该字段必须与您正在进行关联的字段的类型相同。
示例:
sales_state = fields.Selection(related='sales_order.state')
选择sales_order
后,sales_state
字段会自动加载state
的相关sales_order
。
如何限制选择
现在,至于你实际想要做什么。您是否只想允许sales_order
字段选择处于草稿状态的销售订单?如果是,您想使用domain
。
sales_order = fields.Many2one('sale.order', domain=[('state', '=', 'draft')])
后续问题
_inherit = ['crossovered.budget', 'sale.order', 'stock.location', 'stock.move', 'purchase.order']
你为什么继承这么多?当然没有必要继承所有这些。