动态返回表格 [英] Return form dynamically

查看:72
本文介绍了动态返回表格的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

您好,请帮我如何以新形式动态返回One2many的值.

Hi any help please how can I return values of One2many in a new form dynamically.

我有三个类,我定义了一个函数,在该函数中我返回一个以新形式存在的many2many(rubrique_ids)值和One2many(critere_ids)最近以一种新形式存在的方法

I have three class I define a function where I return the values of many2many(rubrique_ids) and One2many(critere_ids) exist recently in a new form how can I return(generate) form dynamically from values of One2many fields

文件xml

    <button name="evaluer" string="Evaluer" type="object"/>

头等舱

    class A(models.Model):
        _name='risques.risque'
        _rec_name='nom_risque'

        nom_risque = fields.Char(required=True, string="Nom du Risque")
        rubrique_ids = fields.Many2many('risques.rubrique', string="Rubrique", required=True)

第二堂课:

    class B(models.Model):
        _name='risques.rubrique'
        _rec_name='nom_rubrique'

        critere_ids = fields.One2many('risques.critere','rubrique_id',required=True, string="Critére d'évaluation")
        nom_rubrique = fields.Char(string="Rubrique")

第三堂课

    class C(models.Model):
        _name='risques.critere'
        _rec_name='nom_critere'

        nom_critere = fields.Char(string="Nom du Critere")
        note = fields.Float(string="Note", readonly=True, compute='_onchange_mesure')
        rubrique_id = fields.Many2one('risque.rubrique',
                                    string='Rubrique')


    class etude(models.Model):
        _name = 'etude.risque'
        client = fields.Many2one('res.partner', string="Client",required=True, index=True)
        risque = fields.Many2one('risques.risque', string="Risque",required=True)
        def evaluer(self):
            context = self._context.copy()
            rubriques=self.risque.risque_id
            nom_rub=[]
            rubs = self.env['risques.rubrique'].browse(rubriques)
            critere_etude =[]
            my_vals = []
            for a in enumerate(rubs):

                i = a[0]
                r = self.env['risques.rubrique'].search([('id','=',self.risque.risque_id[i].id)])
                cr = self.risque.risque_id[i].critere
                for b in enumerate(cr):
                    j = b[0]
                    critere_etude.append(cr.search([('id','=',cr[j].id)]).nom_critere)
                    print cr.search([('id','=',cr[j].id)]).id

                nom_rub.append({'etude_id' : 1,
                                'rubrique_etude':r.nom_categorie,
                                'critere_etude':critere_etude
                                })
                critere_etude = []
                my_vals.append(nom_rub)
                nom_rub = []

            self.env['risque.evaluation'].create({'risque_etude': self.risque.nom_risque,
                                                  'etude': my_vals})

            return {
                'name': 'Evaluation',
                'view_type': 'form',
                'view_mode': 'tree,form',
                #'views': [{'view_mode': 'form', 'view_id': 'rub_id'}],
                'res_model': 'risque.evaluation',
                'type': 'ir.actions.act_window',
                'res_id': self.id,
                #'target': 'new',
                'context': context,
            }

如何动态返回rubrique_ids和critere_ids

how can I return rubrique_ids and critere_ids dynamically

推荐答案

首先,当您搜索表单用户时:

first of all when you search for form user this:

  form_id = self.evn.ref('addon_name.form_xml_id').id # form_id must be integer value not object
  # ex:   form_id = self.env.ref('sale.some_form_id').id
  # ex:   form_id = self.env.ref('point_of_sale.some_other_form_id').id
  # same thing for any view always look for it by the xml id.

现在,如果您要在一个视图中打开记录,那么当您打开操作作为回报时 例如在表单视图中:

Now when you open the action in return if you are opening the record in one view for example in form view:

     form_id = self.evn.ref('addon_name.form_xml_id').id
     return {
            'name': 'Evaluation',
            'view_type': 'form',
            'view_mode': 'form',
            'view_id': form_id, 
            'res_id': record_id, # integer value if you want to open a specific record 
                                 # if not just put False or remove res_id this will open the form
                                 # in create mode but when you specify the id in edit mode
            ....
            ...
            }

现在,如果您想在一个以上的视图中打开一个以上的记录.

Now if you want to open the more than one record and in more than one view.

        form_id = self.evn.ref('addon_name.form_xml_id').id
        tree_id = self.evn.ref('addon_name.tree_xml_id').id
        return {
            'name': 'Evaluation',
            'view_type': 'form',
            'view_mode': 'tree,form',
            'view_id': form_id,
            'views': [(tree_id, 'tree'), (form_id, 'form')] # list of tuple (id, view_code)
            'domain': [some_domain], # when you open more than one record we don't user res_id
                                     # we use domain to filter just those record that we want ot see
            .....
            .....

希望这为您提供了一个如何为用户指定女巫视图的想法: 注意:对于搜索视图:

Hope this gives you an idea how to specify witch view to user: Note: for search view:

      'search_view_id': search_id, # integer value don't pass the object will give json error in client

这篇关于动态返回表格的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆