2017-09-14 78 views
0

我有两个模型,我需要在survey.page模型中创建记录survey.survey模型(在点击保存按钮时)。我试过的方法不起作用。任何建议我怎么能做到这一点?调用其他模型的创建方法

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

我明白了。像冠军一样工作。谢谢 –