0
私はOdoo 8 API v8を使用しており、フィールドにドメインを動的に追加したいと考えています。 私は2つのクラスを持っています。マザークラスの購入Odoo 8にドメインを動的に追加する方法
TMP_BESOIN = {}
TMP_BESOIN['type']= ''
_name = 'purchase.besoin'
_description = "Expression du besion d'achat"
name = fields.Char(required=True,string="Reference",default='XXX',readonly=True)
employee_id = fields.Many2one('hr.employee', string="Demandeur", required=True)
date_expression_besoin = fields.Datetime(string="Date d'expression", required=True,default=fields.Datetime.now())
demandeprix_id = fields.Many2one('purchase.demandeprix.ligne', string='Demande de prix')
lignebesoin_ids = fields.One2many('purchase.besoin.ligne','besoin_id', string='Le besoin')
type = fields.Selection([('product', 'Produit stockable'), ('consu', 'Utilisation directe'), ('immo', 'Immobilisation')],
'Type d\'articles',defaut='product')
order_ids = fields.One2many('purchase.order','besoin_id', string='Le besoin')
destination = fields.Char(string='destination')
demandeprix_ids = fields.One2many('purchase.demandeprix','besoin_id', string='ligne demande de prix')
date_reject = fields.Datetime(string="Date de rejet", readonly=True)
user_reject = fields.Many2one('hr.employee', 'Rejété par', readonly=True)
date_validate = fields.Datetime(string="Date de Validation", readonly=True)
user_validate = fields.Many2one('hr.employee', 'validé par', readonly=True)
date_authorized = fields.Datetime(string="Date de d'autorisation", readonly=True)
user_authorized = fields.Many2one('hr.employee', 'autorisé par', readonly=True)
date_wait_authorisation = fields.Datetime(string="Date de transmition pour autorisation", readonly=True)
user_wait_authorisation = fields.Many2one('hr.employee', 'Transmit par', readonly=True)
date_done = fields.Datetime(string="Date de clôture", readonly=True)
user_done = fields.Many2one('hr.employee', 'clôturé par', readonly=True)
motivation = fields.Text('Designation')
state = fields.Selection([('draft', 'Brouillon'),
('reject', 'Besoin annulé'),
('validate', 'Besoin validé'),
('stock_verified', 'Stock vérifié'),
('wait_authorized', 'En attente d\'autorisation'),
('authorized', 'Autorisé')
], 'Etat',required=True,default='draft')
_sql_constraints = [
('ref_besoin_achat_uniq', 'unique(name)', 'La reference du besoin est unique'),
]
@api.model
def create(self,vals):
if not vals.has_key('name') or vals.get('name')=='XXX':
vals['name'] = self.env['ir.sequence'].get('purchase.besoin.achat.code') or 'XXX'
return super(purchase_besoin,self).create(vals)
@api.onchange('type')
def on_change_type(self):
global TMP_BESOIN
TMP_BESOIN = {}
TMP_BESOIN['type'] = self.type
このクラスこのクラスは
クラスpurchase_besoin_ligne(models.Model)ligne_besoin別クラッセと関係many2oneであるグローバル変数TMP_BESOINを定義し、
onchange_tye方法で値を入れる:
_name = 'purchase.besoin.ligne'
_description = "Ligne du besoin d'achat"
name = fields.Char('Nom', readonly=True, store=True)
besoin_id = fields.Many2one('purchase.besoin', string='Besoin', required=True, ondelete='cascade')
besoin = TMP_BESOIN.copy()
produit_id = fields.Many2one('product.product', string="Article", required=True,domain=[('product_tmpl_id.type', 'like', besoin['type'])])
qte = fields.Integer(string="Quantité", required=True,default=1)
type = fields.Selection([('product', 'Produit stockable'), ('consu', 'Utilisation directe'), ('immo', 'Immobilisation')],
'Type d\'articles',defaut=besoin['type'])
私のコードと同じように、ドメインの値がthに依存するproduit_idにドメインを追加したいeマザークラスの変数型。
私はcreateメソッドを呼び出す前に、変数besoin_id(母クラスとのリンク)の値を持つことはできません。グローバル変数を使用することにしました。
問題は、フィルターはエラーなしで適用されないということです。
タイプは大丈夫Product。商品 –
とのリンクmany2oneとして、ドメインにproduct_tmpl_id.typeを入れて、私は –
朝何が起こるか知っているようProduct。商品の列が、product.templateではありません。私は動作しません。選択内容が空です –