Я хочу создать оформление для контракта с некоторыми предметами с 3 атрибута каждого предмета У меня 4 модели:
Договор
Распродажа
Когда я нахожусь в пользовательском представлении модели оформления, я выбираю контракт
из Many2one
поля отношения
затем попробуйте создать запись Clearance_item_rel
в
Clearance_item_rel
модель.
Когда я нажимаю, чтобы создать запись Clearance_item_rel
, открывается
настраиваемый вид в новом окне
Я хочу использовать выбранный идентификатор контракта в первом представлении, чтобы автоматически заполнить поле contract_id
в Clearance_item_rel
, поскольку пользователь только что выбрал его в первом представлении.
P.S:
clearance_id
is created automatically as I create theClearance_item_rel
record from clearance custom view Butcontract_id
doesn't do and this's my problem
Договор:
class Contract(models.Model):
_name = 'clearance.contract'
clearances = fields.One2many('clearance.clearance_item_rel',
'contract_id')
зазор:
class Clearance(models.Model):
_name = 'clearance.clearance'
contract = fields.Many2one('clearance.contract','Contract')
items = fields.One2many('clearance.clearance_item_rel',clearance_id')
Clearance_item_rel:
class Clearance_item_rel(models.Model):
_name = 'clearance.clearance_item_rel'
contract_id = fields.Many2one('clearance.contract', 'Contract', ondelete='cascade')
clearance_id = fields.Many2one('clearance.clearance', 'Clearance', ondelete='cascade')
item_id = fields.Many2one('clearance.contract_item_rel', 'Item', ondelete='cascade')
previous_quantity = fields.Integer()
used_quantity = fields.Integer()
total_price = fields.Integer()
Вы можете сделать это через контекст в определении поля представления формы. Образец кода:
<record id = "clearance_view_form" model = "ir.ui.view">
<field name = "name">clearance.view.form</field>
<field name = "model">clearance.clearance</field>
<field name = "arch" type = "xml">
<form>
<field name = "contract"/>
<field name = "items" context = {'default_contract_id': contract}/>
</form>
</field>
</record>
Где default_contract_id
— это имя поля clearance.clearance_item_rel
с префиксом default_
, а contract
— значение, которым вы хотите заполнить поле (в данном случае имя поля в модели clearance.clearance
). Обратите внимание, что default_contract_id
использует кавычки, а contract
— нет.
Некоторые другие советы, которые вы, возможно, захотите рассмотреть, поскольку я вижу, что ваш код не соответствует некоторым соглашениям об именах Odoo:
_id
, как в contract_id
_ids
как в item_ids
или clearance_ids