从自定义模块读取草稿状态下的所有 sale.order 个对象 - Odoo v8
Read all sale.order objects on draft state from a custom module - Odoo v8
如何从相关字段中读取处于 'draft' 状态的所有 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")
但它并没有像看起来那样工作。
知道如何实现吗?
我的意思是,问题是所有销售订单都必须处于 'draft' 状态,我知道可能 Many2one 相关字段不起作用,因为 'state' 是一个选择,但是不知道如何加载它。
这不是相关字段的用途。您应该使用这样的计算字段来实现此目的:
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
中。如果我没理解错,那就是你想要达到的目的。
如何使用related
Related 仅用于加载另一个对象字段的实际值。该字段必须与您建立关系的字段类型相同。
示例:
sales_state = fields.Selection(related='sales_order.state')
一旦您选择 sales_order
,sales_state
字段将自动加载 sales_order
的相关 state
。
如何限制选择
现在,至于你真正想做什么。您是否只想允许 sales_order
字段 select 处于草稿状态的销售订单?如果是这样,您想使用 domain
。
sales_order = fields.Many2one('sale.order', domain=[('state', '=', 'draft')])
跟进问题
_inherit = ['crossovered.budget', 'sale.order', 'stock.location', 'stock.move', 'purchase.order']
你为什么要继承这么多东西?当然没有必要继承所有这些。
如何从相关字段中读取处于 'draft' 状态的所有 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")
但它并没有像看起来那样工作。
知道如何实现吗?
我的意思是,问题是所有销售订单都必须处于 'draft' 状态,我知道可能 Many2one 相关字段不起作用,因为 'state' 是一个选择,但是不知道如何加载它。
这不是相关字段的用途。您应该使用这样的计算字段来实现此目的:
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
中。如果我没理解错,那就是你想要达到的目的。
如何使用related
Related 仅用于加载另一个对象字段的实际值。该字段必须与您建立关系的字段类型相同。
示例:
sales_state = fields.Selection(related='sales_order.state')
一旦您选择 sales_order
,sales_state
字段将自动加载 sales_order
的相关 state
。
如何限制选择
现在,至于你真正想做什么。您是否只想允许 sales_order
字段 select 处于草稿状态的销售订单?如果是这样,您想使用 domain
。
sales_order = fields.Many2one('sale.order', domain=[('state', '=', 'draft')])
跟进问题
_inherit = ['crossovered.budget', 'sale.order', 'stock.location', 'stock.move', 'purchase.order']
你为什么要继承这么多东西?当然没有必要继承所有这些。