#python #web #input #odoo #odoo-14
Вопрос:
На Веб-сайте Посмотреть,
Как получить значение поля «nbr1» и использовать его в Python ?
У кого-нибудь есть пример или документация, пожалуйста ?
template.xml
<template id="biography">
<t t-call="website.layout">
<t t-set="title">bio</t>
<div class="oe_structure">
<div class="container">
<h3 t-field="person.name"/>
<p>Last modified: <i t-field="person.write_date"/></p>
<p>nbr1 : <input type="number" name="nbr1"/></p>
<p>Direct copy of nbr1 : <h3 t-field="person.result"/></p>
</div>
</div>
<div class="oe_structure"/>
</t>
</template>
model.py
name = fields.Char()
nbr1 = fields.Integer()
result = fields.Integer(compute="_compute_total")
@api.depends('nbr1')
def _compute_total(self):
for record in self:
record.result = self.nbr1
Комментарии:
1. события @onchange запускаются webclient, очень сложной javascript — структурой odoo. чтобы сделать это в интерфейсе, вам нужно самостоятельно использовать навыки Javascript. А вам вопрос совсем не ясен
2. @CharifDZ извините, я хотел бы получить информацию, размещенную людьми в форме веб-сайта. Таким образом, я могу использовать эту информацию в уравнении. Например, если кто-то введет число «4», я хотел бы получить это число в поле nbr1
Ответ №1:
Поле onChange и вычислительное поле-это не одно и то же.
Измените свой код на этот .
@api.depends('nbr1')
def _compute_total(self):
for record in self:
record.result = 2*self.nbr1
Если вы хотите, чтобы ваше вычисляемое поле хранилось в базе данных,
result = fields.Integer(compute="_compute_total", store=True)
Комментарии:
1. Спасибо, Хей, я не знал за «магазин=Правда». Но то, что я хотел бы, — это получить ввод от пользователя через форму ввода. Затем, после того как я смогу использовать это значение в уравнении. Вы знаете, как это сделать ?
2. Пожалуйста, попробуйте удалить
compute="_compute_total"
с поля и использовать@api.onchange('nbr1')
.3. Я сделал это, но это не работает, затем я добавил больше деталей в вопрос и попробовал что-то новое, но все еще не работает