2015-05-27 8 views
5

में फ़ंक्शन का उपयोग करना मैं लेक्चरर आईडी से संबंधित अपने मॉड्यूल में विषय आईडी लोड करना चाहता हूं। मैं एपीआई एक्सचेंज का उपयोग निम्नानुसार करता हूं।डोमेन फ़िल्टर

@api.onchange('lecturer_id') 
def _onchange_lecturer(self): 
    if self.lecturer_id: 
     sub_id =[] 
     a = [] 
     lecturer = self.lecturer_id.id 
     query = """select op_subject_id from lecturer_subject_rel where op_lecturer_id='%s'""" % lecturer 
     self.env.cr.execute(query) 
     a = self.env.cr.fetchall() 
     d = 0 
     for i in a: 
      e = i[0] 
      sub_id.append(e) 
      d += 1 
     return [('subject_id', 'in', sub_id)] 
    else: 
     return None 

और मेरे क्षेत्र में डोमेन।

<field name="subject_id" domain=_onchange_lecturer /> 

सही विषय आईडी सूची गुजर। मैं उन आईडी सूची के अनुसार विषयों को कैसे लोड कर सकता हूं ....?

उत्तर

1

यदि आप डोमेन डालने के लिए एक्सचेंज विधि का उपयोग कर रहे हैं, तो आपको किसी भी डोमेन को xml में फ़ील्ड पर रखने की आवश्यकता नहीं है।

आप कुछ इस तरह कर सकते हैं:

@api.onchange('lecturer_id') 
def _onchange_lecturer(self): 
    res = {} 
    if self.lecturer_id: 
     sub_id =[] 
     a = [] 
     lecturer = self.lecturer_id.id 
     query = """select op_subject_id from lecturer_subject_rel where op_lecturer_id='%s'""" % lecturer 
     self.env.cr.execute(query) 
     a = self.env.cr.fetchall() 
     d = 0 
     for i in a: 
      e = i[0] 
      sub_id.append(e) 
      d += 1 
     res['domain] = {'subject_id': [('id', 'in', sub_id)]} 
    else: 
     res['domain] = {'subject_id': []} 
    return res 

या आप बस समारोह क्षेत्र है कि आपके की जरूरत विषय की आईडी परिकलित किया जाएगा और फिर आप डोमेन सीधे का उपयोग बना सकते हैं।

पीएस लेकिन आईडी के लिए आपका कोड खोज वास्तव में अजीब लग रहा है, यह नहीं पता कि आप ऐसा क्यों कर रहे हैं।

संबंधित मुद्दे