2012-07-27 2 views
0

으로 가져옵니다. 두 클래스가 있습니다. 클래스 deposit.line 및 res_partner (상속). 나는ticket.py에서 다른 데이터베이스의 필드 날짜를

def _compute_dept2(self, cr, uid, ids, amount, arg, context=None): 
    result = {} 
    obj2 = self.pool.get('deposit.line') 
    for record in obj2.deposit_line: 

     temp1 = record.date 
     print temp1 
     print result 
    return result 

(상속)을 클래스 deposit.line 일이지만 클래스 res_partner에서 그 기능을 원하지만 기존의 인쇄 결과를 거짓. 뭐가 잘못 됐니? 내 코드를 수정하십시오.

추 신 : 내 설명이 좋지 않습니다. 내 코드를 보면 내 설명을 분명히 알 수있다.

본 MY COMPLETE CODE : 당신은 디버거를 사용하는 방법을 배우게한다

obj2.browse(cr, uid, ids, context=context) 

: 3 행 후, 당신이 잊어

class deposit_line(osv.osv): 
    _name ="deposit.line" 
    _description = "Deposit Line" 

    _columns = { 
     'name': fields.char('Name', size=64), 
     'ref': fields.char('Reference', size=64), 
     'amount': fields.float('Amount'), 
     'date': fields.date('Date', required=True), 
     'deposit_id': fields.many2one('res.partner', 'Deposit ', required=True, ondelete='cascade'), 
    } 
deposit_line() 


class res_partner(osv.osv): 
    _inherit = 'res.partner' 

    def _compute_age(self, cr, uid, ids,date_birth,age,arg, context=None): 
     result = {} 
     for r in self.browse(cr, uid, ids, context=context): 
      age=0 
      if r.date_birth: 
       age = (datetime.now()-datetime.strptime(r.date_birth,"%Y-%m-%d")).days/365.25 
      result[r.id] = age 
     return result 

    def _compute_dept(self, cr, uid, ids, deposit, available, arg, context=None): 
     result = {} 
     for r in self.browse(cr, uid, ids, context=context): 
      avail=0 
      temp = r.available 
      if r.deposit: 
       avail = r.deposit + temp 
      result[r.id] = avail 
     return result 

    def _compute_dept2(self, cr, uid, ids, amount, arg, context=None): 
     result = {} 
     obj2 = self.pool.get('deposit.line') 
     for record in obj2.deposit_line: 

     temp1 = record.date 
     print temp1 
     print result 
      return result 

    _columns = { 
     'speaker': fields.boolean('Leader'), 
     'event_ids': fields.one2many('event.event','main_speaker_id', readonly=True), 
     'event_registration_ids': fields.one2many('event.registration','partner_id', readonly=True), 
     'airline': fields.boolean('Airlines'), 
     'hotel': fields.boolean('Hotel'), 
     'date_birth': fields.date('Date of Birth'), 
     'id_no': fields.char('ID. No', size=20), 
     'id_expired': fields.date('Expired Date'), 
     'sex':fields.selection([('male','Male'),('female','Female')],'Sex'), 
     'age' : fields.function(_compute_age, type='float', method=True, store=True, string='Age', readonly=True), 
     'deposit': fields.function(_compute_dept2, type='float', method=True, store=True, string='Deposit', readonly=True), 
     'available': fields.function(_compute_dept, type='float', method=True, store=True, string='Available', readonly=True), 
     'deposit_ids':fields.one2many('deposit.line', 'deposit_id', 'Deposit Line'), 

    } 

res_partner() 
+0

수업을 보여줄 수 있습니까? –

+0

코스가 끝나면 첫 번째 게시를 수정합니다. 나는 네 도움이 필요해. _compute_dept2의 문제 –

답변

2

deposit_line의 필드가 res.partner 모델에 정의되어 있으므로 deposit_line 개체에 직접 액세스 할 필요가 없습니다.

def _compute_dept2(self, cr, uid, ids, amount, arg, context=None): 
    result = {} 
    for partner in self.browse(cr, uid, id, context=context) 
     result[partner.id]=0 
     for deposit_line in partner.deposit_ids: 
      result[partner.id] += deposit_line.amount 
    return result 
+0

고맙습니다. –

1

라인을 추가

import pdb; pdb.set_trace() 어디를 중단 점을 배치하려고합니다. 파이썬이 중단 점에 도달하면 콘솔에서 (pdb) 프롬프트로 중지합니다. 변수 obj를 인쇄하려면 p obj을 입력하고 다음 명령으로 넘어가려면 n을 입력하고 도움을 받으려면 h을 입력하십시오. 이 postdocs에서 자세한 정보를 확인할 수 있습니다.

+0

이 오류는 ** 'browse_record_list'객체에 'deposit_line'속성이 없습니다 ** –

+0

내 테이블이 테이블을 사용하기 때문에 상속합니까? –

+0

대답이 잘못되었습니다. 'ids'는'res.partner' 객체를위한 것입니다. 'deposit_line' 오브젝트를 브라우즈하는 데는 사용할 수 없습니다. 'deposit_line' 레코드에 어떻게 접근하는지 내 대답을 확인하십시오. –

관련 문제