Как получить ввод с веб-сайта в поле.integer() в Python Odoo

#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. Я сделал это, но это не работает, затем я добавил больше деталей в вопрос и попробовал что-то новое, но все еще не работает