0

我有一个任务一直让人头疼,非常感谢一些帮助。
任务

  • 模型 A 到模型 B 具有 many2many 关系。
  • 在具有 many2many 关系的模型 B 中,我有一个 Integer 字段。
  • 如果字段整数为 3 或更大,对于使用 many2many 项目添加的行项目的每一行,动态生成每周计划意味着如果整数值为 3,则如果字段为 4,则为 many2many 中的所有行项目动态生成三周为每个订单项生成 4 周的时间安排。

我尝试使用向导无济于事。我认为解决的方法可能会有所帮助,但我无法成功地使其工作是使用 fields_view_init() , fields_view_get() ,使用上下文,我在模型 B 中选择多对多关系的整数字段的值和使用@api.onchange 和@api.depends - 拉取整数字段的值,并可能使用fields_view_get() 根据整数值动态创建两周计划或3 周计划。

我该如何实现,请高度赞赏一些代码示例。下面的代码将有助于理解我上面的意思

class  ratecard_sin_radio(models.Model):
    code  = fields.Char(string='SINGULAR RATECARD CODE',readonly=True)
    name  =   fields.Char(string='NAME')
    outlet_id = fields.Many2one(comodel_name='outlet', string='Outlet')
    timeband_id  = fields.Many2one(comodel_name='timeband', string='TimeBand')


class  ratecard_multiple(models.Model):
    #pudb.set_trace()
    _name = 'ratecard.multiple'
    scheduled_for  = fields.Integer(string='SCHEDULED FOR',default=1 ,track_visibility='always',store=True , readonly=True)

    multiple_ratecard_id  = fields.Many2many(comodel_name='ratecard.sin.radio', relation='ratecard_multiple_singular_rel',
                                                    column1='ratecard_multiple_id',
                                                    column2='ratecard_sin_radio_id', 
                                                    string='RATECARDS') 

我拥有的视图的示例部分:

  <group colspan="4"  col="4" >
<tree  editable="bottom">
        <group colspan="2"  col="2" >
             <field name='name'/>

            <field name="scheduled_for"/>
              </group>

        <field name='multiple_ratecard_id' nolabel="1" options="{'reload_on_button': true}">  <!-- widget="many2many"-->
        <tree  string="ALLOCATE SPOTS" editable="bottom">
                            <!--<field name="week_id" widget="one2many_list"/>-->
                         <button name="scheduler" string="SCHEDULE" type="object" class="oe_highlight"/>
                           <field name="code"/>
                            <field name="name"/>
                            <field name="outlet_id" on_change="onchange_outlet(outlet_id)" placeholder="OUTLET"/>
                             <field name="outlet_type_id" domain="[('outlet_id', '=' ,outlet_id)]" placeholder="OUTLET TYPE" />

                             <field name='monday'/>
                            <field name='tuesday'/>
                            <field name='wednesday'/>
                            <field name='thursday'/>
                            <field name='friday'/>
                            <field name='saturday'/>
                             <field name='sunday'/>
                             <field name="spot_total"/>
                             <field name="noofweeks"/>
                           <field name='allocate_subtotal'/>
                           <field name="rates_total"/>
                          <field name="total_cost"/>
        </tree>
      </field>

按钮调度程序是一个现在依赖于 schedule_for 来动态生成每周视图的函数,如果 schedule_for 为 3
,那么我会动态生成 mon-sun mon-sun mon-sun。如果
4 那么我生成 mon -sun mon-sun mon-sun mon-sun

<button name="scheduler" string="SCHEDULE" type="object" class="oe_highlight"/>

调用这个创建一周的函数。问题我需要根据 scheduled_for值控制本周生成,如果 scheduled_for是 3 我返回一个周历模型,它有 3 周是 mon-sun , mon-sun , mon -sun 如果它scheduled_for是 4 然后我返回周一至日,周一至周日,周一至周日

@api.multi
def scheduler(self):
    view_id = self.env.ref('ragtimeorder.view_week_form').id
#   context = self._context.copy()
    return {
            'name':_('SCHEDULE RATECARD'),
            'view_type': 'form',
            'view_mode': 'form',
            'views': [(view_id, 'form'), ],
            'res_model': 'week',
           # 'context': self._context,
            'type': 'ir.actions.act_window',
            'target': 'new',
            'flags': {'action_buttons': True},
}

此调度程序功能的问题是静态的,它需要是动态的

4

1 回答 1

0

@danielmwai

他们在这里有多种可能的解决方案,您可以使用:

1)每次您安排为所有可能的事件创建数据库记录时(已售出和持久的解决方案,但开销很大)

2)您可以使用read/search_read方法虚拟创建记录,每次有人要求记录时,您读取该记录并在视图中创建虚拟记录传递,因为视图重新转储它将呈现值并返回,当您取回数据以进行写入时Ridewrite方法并删除虚拟记录并在代码上处理它们。(速度快,但有时可能会行为不端)

3)你可以写web模块,让JS做魔法,通过网站接口模块做所有的事件渲染。

最好的

于 2015-12-07T01:10:39.003 回答