2015-09-15 21 views
6

tôi có chức năng sau đây trong lớp hr_evaluation_interview:Làm cách nào để thực hiện truy vấn trong Odoo-8 từ Python?

@api.onchange('evaluation_id') 
def onchange_evalID(self): 
    self.deadline=self.env.cr.execute('SELECT date FROM hr_evaluation_evaluation where id=119') 

Lưu ý: Tôi chỉ đưa ra id=119 trong truy vấn cho mục đích thử nghiệm.

Khi tôi cung cấp self.deadline=datetime.now.strftime(%Y-%m-%d %H:%M:%S"), nó hoạt động tốt và thay đổi giá trị của trường deadline khi giá trị của trường evaluation_id thay đổi. Một lần nữa để thử nghiệm.

Điều tôi thực sự cần là thực hiện truy vấn tương tự như những gì tôi đã đề cập. Tuy nhiên khi tôi thực hiện truy vấn này, không có gì được in trên trường deadline. Khi tôi kiểm tra nhật ký, tôi thấy cảnh báo này:

WARNING db_name openerp.models: Cannot execute name_search, no _rec_name defined on hr_evaluation.evaluation 

Tôi đã thử kiểm tra trực tuyến tại sao cảnh báo này, nhưng không được trợ giúp. Tôi có làm điều gì sai? Làm thế nào chính xác tôi có thể thực hiện truy vấn từ bên trong @api.onchange(self)?

+0

Có rất nhiều ví dụ như vậy đã có sẵn trong mã lõi của odoo để thực hiện truy vấn. Ở đây sau khi thực hiện truy vấn, bạn vẫn cần phải gọi câu lệnh fetch, để lấy kết quả. –

+0

bạn có thể vui lòng cung cấp một số mã không? – solving12

Trả lời

5

Như Hardik đã nói, cr.execute() không trả lại trực tiếp bạn kết quả. Bạn cần tìm nạp các giá trị từ con trỏ sau khi thực hiện truy vấn. Hãy thử như thế này:

@api.onchange('evaluation_id') 
def onchange_evalID(self): 
    self.env.cr.execute('SELECT date ' 
           'FROM hr_evaluation_evaluation where id=119') 
    self.deadline = self.env.cr.fetchone()[0] 
+1

Cảm ơn câu trả lời nhưng nó nói 'AttributeError: 'NoneType' đối tượng không có thuộc tính 'fetchone'':/Bất kỳ ý tưởng gì là sai? – solving12

+0

Tôi đã thử truy vấn này với Postgres một cách riêng biệt và nó hoạt động tốt để trả về không phải là Không cho truy vấn này. – solving12

+0

Cơ sở dữ liệu tôi đang cố gắng lấy dữ liệu từ được định nghĩa trong một lớp mô hình khác (hr_evaluation_interview) và tôi đang làm việc trong một lớp mô hình khác trong cùng một tệp (hr_evaluation_interview). Nhưng khi thực hiện truy vấn, nó không quan trọng từ mô hình nào tôi đang thực hiện đúng? – solving12

1

Nếu evaluation_idm2o lĩnh vực hr.evaluation.evaluation mô hình mà bạn có thể thử bên dưới mã. bạn không cần thực hiện truy vấn nào cả.

@api.onchange('evaluation_id') 
def onchange_evalID(self): 
    if self.evaluation_id and self.evaluation_id.date: 
     self.date = self.evaluation_id.date 
Các vấn đề liên quan