2015-05-27 20 views
5

Tôi muốn tải các id chủ đề trong mô-đun của tôi liên quan đến id giảng viên. Tôi sử dụng api onchange như sau.Sử dụng chức năng trong bộ lọc tên miền

@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 

và tên miền trong trường của tôi.

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

chuyển danh sách id chủ đề chính xác. làm thế nào tôi có thể tải các đối tượng theo danh sách id ....?

Trả lời

1

Nếu bạn đang sử dụng phương thức onchange để đặt tên miền, bạn không cần đặt bất kỳ miền nào trên trường vào xml.

Bạn có thể làm một cái gì đó như thế này:

@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 

Hoặc bạn chỉ có thể tạo ra chức năng trường sẽ tính id của đối tượng cần thiết của bạn và sau đó bạn sử dụng trực tiếp trong phạm vi.

P.S. nhưng mã của bạn tìm kiếm ID trông thật kỳ lạ, không biết tại sao bạn làm như thế này.

Các vấn đề liên quan