首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Odoo如何根据字段内部值动态创建每周计划mod-fri和mon-fri

Odoo如何根据字段内部值动态创建每周计划mod-fri和mon-fri
EN

Stack Overflow用户
提问于 2015-12-02 13:43:45
回答 1查看 838关注 0票数 0

我有一项任务一直让我头疼,非常感谢你的帮助。

任务

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

我试过用一个巫师,但没有用。我认为解决问题的方法可能会有帮助,但我还没有成功地使其工作:使用fields_view_init(),fields_view_get(),使用上下文,其中我选择多个关系模型B中整数字段的值,并使用@api.onchange和@api.depends --拉出整数字段的值,并且可能正在使用fields_view_get()动态创建两个星期的计划,或者根据整数值创建三个星期。

如何实现,请一些代码示例非常感谢。下面的代码将有助于理解我上面的意思。

代码语言:javascript
复制
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') 

我的观点的样本部分如下:

代码语言:javascript
复制
  <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>

按钮调度程序是一个现在依赖于scheduled_for来动态生成每周视图的函数,如果scheduled_for是3

然后动态地生成mon,mon,mon。如果

4然后生成mon-sun mon。

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

调用此函数,该函数创建一个星期。我需要根据scheduled_for值来控制这个星期产生的问题,如果scheduled_for是3,我返回一个有3周的日历模型,即mon,mon,mon- -sun,如果scheduled_for是4,则返回mon,mon。

代码语言:javascript
复制
@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},
}

此调度程序函数的问题是静态的,需要是动态的。

EN

回答 1

Stack Overflow用户

发布于 2015-12-07 01:10:39

@danielmwai

它们在这里可能有多种可能的解决方案,您可以雇员:

1)每次调度时,您都会为所有可能的事件创建数据库记录(出售和持久解决方案,但很多都是头等大事)。

2)您几乎可以使用read/search_read方法创建记录,每当有人请求记录时,您读取该记录并在视图中创建虚拟记录传递作为视图重新转储时,它将呈现值并根据数据返回,然后遍历write方法,删除虚拟记录并在代码上处理它们。(速度快,但有时行为不当)

3)您可以编写web模块,让JS完成魔术,并通过网站界面模块完成所有事件的呈现。

凌驾

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34044275

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档