2015-07-22 1 views
0

У меня есть следующий код, который calender.event унаследованный класс. там я буду создавать события на номер последовательность. и у меня есть другое поле, как в других областях 'inspection_name' т.д.Как получить значение параметра many2one?

from openerp.osv import fields, osv 
from openerp import api 
import logging 

class feedback_form(osv.Model): 
    _name = 'feedback.form' 
    _rec_name = 'inspec_type' 
    _columns={ 
     'folionum' : fields.many2one('calendar.event','Maintainace ID',), 
     'folio_number' : fields.many2one('asset.asset','Folio number',), 
     'inspec_type' : fields.many2one('asset1.inspection','Inspection Type',domain="[('inspec_type' , '=' , folio_number)]"), 

     'frequency' : fields.char('Frequency'), 
     'shutdown' : fields.char('Shout Down'), 
     'insp_msr1' : fields.many2one('results.measure','Result',domain="[('inspec_type', '=', inspec_type)]"), 
    } 

    def onchange_folio(self, cr, uid, ids, folionum, context=None): 
     dids = [] 
     for record in self.pool.get('calendar.event').browse(cr, uid, folionum, context=context): 
      dids = [x.id for x in record.folio_num] 
     return {'domain':{'folio_number':[('id','in',dids)]}} 

    '''def onchange_insp(self, cr, uid, ids, folio_number, context=None): 
     dids = [] 
     for record in self.pool.get('calendar.event').browse(cr, uid, folio_number, context=context): 
      dids = [x.id for x in record.inspection_name] 
     return {'domain':{'inspec_type':[('id','in',dids)]}}''' 

    def onchange_measure(self, cr, uid, ids, inspec_type, context=None): 
     dids = [] 
     for record in self.pool.get('asset1.inspection').browse(cr, uid, inspec_type, context=context): 
      dids = [x.id for x in record.msr_insp] 
     return {'domain':{'insp_msr1':[('id','in',dids)]}} 

calendar.event

из openerp.osv полого импорта, О из OpenERP API импорта

класса calendar_event (osv.osv):

_inherit = "calendar.event" 
_rec_name = 'number' 

_columns = { 
     'number' : fields.char('Meeting ID',readonly=1), 
     #'place' : fields.many2one('stock.location','Substation Location',), 

     'place' : fields.many2one('asset.parentlocation','Substation Location',), 
     #'location' : fields.selection(STATUS_SELECTION,'Location', default='Board A'), 
     'asset_catg_id' : fields.many2one('asset.catg','Asset Catg Selection',), 
      'area_id' : fields.many2one('asset.name','Asset Name Selection', domain="[('asset_catg_id', '=', asset_catg_id)]", select=True, required=True), 
     'assetmodelid_add' : fields.many2many('agile.portfolio1','agile_portfolio1_rel','super_id','agile_portfolio1_id','Asset Model Code',), 
     'folio_num' : fields.many2many('asset.asset','asset_asset_rel','super_id','asset_asset_id','Folio Num',), 
     #'inspection_name' : fields.many2one('asset1.inspection','Inspection Type',), 
     'inspection_name' : fields.many2many('asset1.inspection','asset1_inspection_rel','super_id','asset1_inspection_id','Inspection Type'), 
     #'folio_num' : fields.related('folio_num','folio_num',string='Folio Num',relation='asset.asset', type='many2one')  
     } 


_defaults = { 
      'number' : lambda self,cr,uid,context={}:self.pool.get('ir.sequence').get(cr,uid,'calendar.event'), 
      } 
+0

все, что я пытаюсь с функцией четкости ее получения ошибки как AttributeError: объект «NoneType» не имеет атрибута «поиска» –

ответ

0

Во-первых

Я предполагаю, что это довольно просто опечатка ошибка, которую вы сделали, заявление:

mesure_fil = self.pool.get('calender.event')

должно быть:

mesure_fil = self.pool.get('calendar.event')

Вы опечатку на название модели.

Второй

Вы должны chnage треску ВФ ваш on_chnage метод здесь, чтобы заставить его работать правильно:

def onchange_folio(self, cr, uid, ids, folionum, context=None): 
    dids = [] 
    for record in self.pool.get('calendar.event').browse(cr, uid, folionum, context=context): 
      dids = [x.id for x in record.inspection_name] 
    return {'domain':{'inspec_type':[('id','in',dids)]}} 

и в вашем представлении формы, пожалуйста, убедитесь, что ваш код называется как этот

<field name="folionum" options="{'no_create': True, 'no_open': True}" on_change="onchange_folio(folionum)"/> 

Это будет работать правильно.

Bests

+0

я сделал это, но опять его не фильтрации. эта функция правильная? ... пожалуйста, примите меня решение. Мне нужно это при любом условии. –

+0

В поле chnage вы не можете изменить домен или добавить домен. –

+0

, пожалуйста, дайте решение, например, код линии –