頭が痛くなる仕事があります。助けていただければ幸いです。
タスク:
- モデル 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_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},
}
このスケジューラ関数の問題は静的であり、動的である必要があります