2012-05-09 32 views
5

Tôi cố gắng thực hiện một số phép tính của các trường của đối tượng và lưu chúng vào một trường mới. Tôi đang bắt đầu với một ví dụ đơn giản về việc sử dụng tệp tin .function, nhưng khi tôi cố gắng đăng nhập vào openerp, hệ thống sẽ báo lỗi rằng người dùng hoặc mật khẩu không chính xác.OpenERP: Sử dụng đơn giản các trường.function

trong lớp học của tôi, tôi thêm lĩnh vực này:

 'a' : fields.integer('A'), 
     'b' : fields.integer('B'), 
     'total' : fields.function(fnct, method=True, string='Tot',type='integer'), 

định nghĩa của hàm:

 def fnct(self, cr, uid, ids, fields, arg, context): 

      x = {} 

      for record in self.browse(cr, uid, ids): 

       x[record.id] = record.a + record.b 

      return x 

Xin vui lòng, bất cứ ai có thể giúp tôi? cảm ơn

Trả lời

4

Không có kết nối chức năng nào được ghi với đăng nhập OpenERP.

Vì vậy, có thể bạn đang cung cấp id hoặc mật khẩu người dùng sai.

Các chính Sử dụng chức năng Field là:

Auto Tính giá trị của lĩnh vực này dựa trên các lĩnh vực khác.

tức Tổng = field1 + field2 + field3

Ví dụ: 'tổng': fields.function (get_total, method = True, string = 'Tổng', type = 'nguyên'),

Làm thế nào để xác định chức năng:

def get_total(self, cr, uid, ids, fields, arg, context): 

    x={} 

    for record in self.browse(cr, uid, ids): 

     x[record.id]= record.field1 + record.field2 + record.field3 

    return x 
+0

Cảm ơn bạn Avadhesh vì sự giúp đỡ của bạn. Nhưng tôi chắc chắn rằng người dùng và thẻ là chính xác vì khi tôi nhận xét mã có chức năng, tôi có thể đăng nhập. Tôi đã cố gắng tính Giá trị của trường dựa trên các trường khác như bạn nói nó vẫn không hoạt động! –

+0

Lỗi nào bạn nhận được? – Avadhesh

+0

khi tôi đăng nhập tôi nhận được "Mauvais nom d'utilisateur ou mot de passe" nhưng tôi chắc chắn rằng họ là chính xác !! đây là hàm mới của tôi 'def fnct (tự, cr, uid, id, trường, arg, ngữ cảnh): x = {} để ghi trong self.browse (cr, uid, ids): x [record.id ] = record.a + record.b \t return x ' –

2

để khắc phục vấn đề đó, tôi kiểm tra đối với một số intendation và cũng là định nghĩa về chức năng của tôi nên trước khi tuyên bố lĩnh vực.

+0

Xin chúc mừng! Khi bạn có thể, hãy đảm bảo đánh dấu câu trả lời của bạn là 'được chấp nhận' để những người khác có thể học hỏi từ giải pháp của bạn. Chúc mừng ~ –

0
def fnct(self, cr, uid, ids, fields, arg, context): 

    x = {} 

    for record in self.browse(cr, uid, ids): 

    x[record.id] = record.a - record.b 

if x[record.id]<0: 

    raise osv.except_osv(("Warning"),("You Cant Subtract %s ")%(record.a - record.b)) 

else: 


return x 

    "a":fields.integer('A'), 
    "b":fields.integer('B'), 


"total":fields.function(fnct, method=True, string='Total',type='integer'), 
Các vấn đề liên quan