#python #odoo #odoo-12
#python #odoo #odoo-12
Вопрос:
Я создал новый модуль в odoo. У нее есть кнопка действия (проверьте ip с помощью ipwhois). Теперь мне нужно интегрировать этот модуль на веб-сайт. Легко отображать поля на веб-странице, но я не знаю, как создать кнопку и вызвать функцию. Кнопка отображается на веб-странице, но функция не вызывается.
Как я понимаю: нажатие на кнопку должно вызвать функцию python, перезагрузить страницу и ввести новое значение в поле «result_check».
<record id="sale_form_view" model="ir.ui.view">
<field name="name">sale.form</field>
<field name="model">product.template</field>
<field name="inherit_id" ref="website_sale.product_template_form_view"/>
<field name="arch" type="xml">
<field name="categ_id" position="after">
<button name="make_request" type="object" string="Make check" />
<field name="result_check" />
</field>
</field>
</record>
<templateid="add_fields_product"inherit_id="website_sale.product">
<xpathexpr="//div[@id='product_details']"position="before">
<div>
<a role="button" href="#"><span>Make check</span></a>
<p itemprop="name" t-field="product.result_check">Result</p>
</div>
</xpath>
</template>
Комментарии:
1. Где вы должны написать функцию make_request?
Ответ №1:
Сначала вы должны написать функцию make_request в product_template.py досье.Означает, что вы должны наследовать модель product.template.Например, следующее:
def make_request(self):
# Here your code...
И с помощью этой функции вы можете установить значение поля «result_check».
Надеюсь, это вам поможет. Спасибо.
Комментарии:
1. Я сделал это — он работает в приложении, но мне нужно сделать эту функцию доступной с веб-сайта. Я не знаю, как связать его с шаблонами xml.
Ответ №2:
Вам нужно поместить код в свой models.py досье. Ваш XML-файл имеет
<button name="make_request" type="object" string="Make check" />
Когда пользователь нажимает на эту кнопку, он переходит на ваш models.py файл для активации кнопки. Похоже, вы используете class: product.template [из вашего XML-файла]
В models.py файл, найдите раздел product.template, внутри этого класса поместите это в:
@api.multi
def make_request(self):
Put your code here
return
Итак, теперь ваша кнопка в xml связана с кодом python. Вот как вы получаете кнопку для активации вашего кода на python (заставляя вашу кнопку вызывать ваш код на python)
Комментарии:
1. Спасибо! он работает в модуле (портале), но не на странице веб-сайта.
2. Возможно, вам следует использовать класс контроллера и отображать свой веб. Вы можете вызвать функцию из python в классе контроллера. @Laoris
3. @Laoris yes test with С. Дэлгэрцэцэг’s idea. Я понимаю, что вы хотите сделать. На веб-странице (веб-сайте) есть кнопка, но когда вы нажимаете на нее, она ничего не делает. Это означает, что кнопка неправильно связана с вашим кодом python. Вам нужно убедиться, что имена указаны правильно и в правильном классе. Вы звоните не в то место, или ваш код на python находится не в том месте. Вам нужно показать свой код на python и куда вы его помещаете. Тогда мы сможем помочь больше.