У меня есть задача, от которой болит голова, очень благодарю за помощь.
ЗАДАЧА:
- Модель A и Модель B имеют отношение "многие-многие".
- В модели B, которая имеет отношение many2many, у меня есть поле Integer.
- Если целое число поля равно 3 или более, для каждой строки элементов строки, добавленных с использованием элементов many2many, динамически генерировать еженедельные расписания, что означает, что если целочисленное значение равно 3, динамически генерировать три недели для всех элементов строки в many2many, если поле равно 4 для каждой позиции создайте 4 недели для планирования.
Я безуспешно пытался воспользоваться мастером. Способы решения, которые, я думаю, могут помочь, но мне не удалось успешно заставить его работать, используя fields_view_init (), fields_view_get (), используя контекст, в котором я выбираю значение целочисленных полей в модели B отношения многие ко многим и использование @ api.onchange и @ api.depends - извлекает значение целочисленного поля и может с помощью fields_view_get () динамически создавать двухнедельное расписание или трехнедельное расписание в зависимости от целочисленного значения.
Как я могу достичь, пожалуйста, высоко ценю несколько примеров кода. Этот код ниже поможет понять, что я имею в виду выше.
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
, то динамически я генерирую пн-вс пн-вс пн-вс. если
4, то я генерирую пн-вс пн-вс пн-вс пн-вс
На <button name="scheduler" string="SCHEDULE" type="object" class="oe_highlight"/>
вызывает эту функцию, которая создает неделю. Проблема, которую мне нужно контролировать, чтобы эта неделя была сгенерирована в соответствии со значением scheduled_for, так что если scheduled_for равно 3, я возвращаю модель недельного календаря с 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},
}
Проблема с этой функцией планировщика статическая, которая должна быть динамической.