콘텐츠로 건너뛰기
메뉴
커뮤니티에 참여하려면 회원 가입을 하시기 바랍니다.
신고된 질문입니다
4 답글
14191 화면

Hello,

I'm trying to insert a new record. Following guide i need to call self.create({'name':'Value'}) within the model. But on try, i get following error:

TypeError: old_api() takes at least 3 arguments (2 given)

I dont unterstand the system of the old api mapping. Please help to find the error.

Best regards

Michael

아바타
취소
베스트 답변

Hello Michael

I guess the method inside which you use create call have old api argument.

Example:

def btn_send(self,cr,uid,ids,context=None):

     self.create({name:'AAAA'}) #you cant use new api call in old api like this

This is wrong

Now, what you have to do is :

@api.v8

def btn_send(self):

     self.write({name:'AAAA'}) 

You can use any method but you cant use create method because you are trying to create the record in which you are already in.

Complete Example:

class a(models.Model)

_name = 'a.a'

con = fields.Char('Country')

 

class B(models.Model)

_name = 'b.b'

lnam = fields.Char('lnam')

@api.v8

def btn_join(self):

  self.env['a.a'].create({con:self.lnam}) #result : value_of_Lnam in Country

 

You can refer guidline of How to use Environment in new api click here 

Hope that this answer will help you.

Please don't hesitate to ask any question regarding this.

Thank You

 

 

 

아바타
취소
베스트 답변

 Try this,

            new_id = phonecall.create(cr, uid, vals, context=context)

 

아바타
취소
베스트 답변

AFAIK, Not all of v8.0 code has been migrated to new API.  So, you need to check what model that you are writing and if has supported new API.

아바타
취소
작성자 베스트 답변

Thx for the nice answer. I got it. I needed to rewrite the button function from:

def btn_send(self,cr,uid,ids,context=None):

to:

@api.multi #otherwise the form view cant access this function
def btn_send(self):

Problem solved. best regards Michael

아바타
취소
관련 게시물 답글 화면 활동
2
11월 22
9596
2
12월 20
8443
2
4월 15
4860
2
2월 22
5537
2
1월 20
15261