0

頭が痛くなる仕事があります。助けていただければ幸いです。
タスク:

  • モデル A からモデル B には多対多の関係があります。
  • 多対多の関係を持つモデル B には、整数フィールドがあります。
  • フィールド整数が 3 以上の場合、many2many アイテムを使用して追加されたライン アイテムの各ラインに対して動的に毎週のスケジュールを生成します。つまり、整数値が 3 の場合、フィールドが 4 の場合、many2many 内のすべてのライン アイテムに対して 3 週間を動的に生成します。各広告申込情報について、スケジュールに 4 週間かかります。

ウィザードを使用してみましたが、役に立ちませんでした。私が解決する方法は助けになると思いますが、うまく機能させることができませんでした@api.onchange および @api.depends を使用 - 整数フィールドの値を取得し、fields_view_get() を使用して、整数値に応じて 2 週間のスケジュールまたは 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>

ボタン スケジューラは、scheduled_for に依存して毎週のビューを動的に生成する関数です
。4 の場合
、mon -sun mon-sun mon-sun mon-sun を生成します

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

週を作成するこの関数を呼び出します。問題 今週は scheduled_for値 に応じて生成されるように制御する必要がありますscheduled_for。3 の場合は mon-sun 、mon-sun 、mon-sun の 3 週間を持つ週カレンダー モデルを返し、scheduled_for4 の場合は戻ります。モンサン、モンサン、モンサン、モンサン

@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