2017-09-14 4 views
0

두 모델이 있습니다. 모델 (저장 버튼을 눌렀을 때)에서 survey.page 모델의 레코드를 만들어야합니다. 시도한 방법이 작동하지 않습니다. 어떤 제안을 어떻게 할 수 있습니까?다른 모델의 메소드 만들기 호출

class Survey(models.Model): 
_name = 'survey.survey' 
    @api.multi 
    def my_func(self): 
     last_id = self.env['survey.survey'].search([])[-1].id 
     vals = {'title': 'Page 1', 'survey_id': last_id} 
     other_object = self.env['survey.page'] 
     return other_object.create(vals) 


class SurveyPage(models.Model): 
    _name = 'survey.page' 

    title = fields.Char('Page Title', required=True, translate=True) 
    survey_id = fields.Many2one('survey.survey', string='Survey', ondelete='cascade', required=True) 

답변

2

당신은 survey.survey 모델을 덮어 쓰기 create 방법을 사용하여 그것을 할 수 있습니다. 블로우 코드 사용해보기 :

class Survey(models.Model): 
    _name = 'survey.survey' 
    @api.multi 
    def my_func(self): 
     self.ensure_one() 
     vals = {'title': 'Page 1', 'survey_id': self.id} 
     other_object = self.env['survey.page'] 
     return other_object.create(vals) 

    @api.model 
    def create(self, vals): 
     res = super(Survey, self).create(vals) 
     res.my_func() 
     return res 

class SurveyPage(models.Model): 
    _name = 'survey.page' 

    title = fields.Char('Page Title', required=True, translate=True) 
    survey_id = fields.Many2one('survey.survey', string='Survey', ondelete='cascade', required=True) 
+0

나는 이해합니다. 챔피언처럼 작동합니다. 감사 –