2016-07-14 3 views
0

На одной из моих страниц моего сайта odoo 9 у меня есть раскрывающийся список (с использованием тега select в представлении xml), как я могу сохранить опцию, которую пользователь выбирает ?Как сохранить данные из раскрывающегося списка в odoo

Код:

<select type="text" name="delivery_time" class="form-control" t-att-value="website_sale_order.delivery_time"> 
    <option value="1">8 AM - 10 AM</option> 
    <option value="2">10 AM - 12 PM</option> 
    <option value="3">12 PM - 2 PM</option> 
    <option value="4">2 PM - 4 PM</option> 
    <option value="5">4 PM - 6 PM</option> 
</select 

Модель:

class odss_sale_order(models.Model): 
    _inherit = "sale.order" 

    delivery_time = fields.Char() 

Как вы можете видеть, что я уже пробовал делать вещи в модели, так это работает, но я не могу показаться, чтобы получить его, любая идея, почему это не работает?

EDIT: Я ищу ответ, похожий на this, но для Odoo вместо PHP.

+0

Я знаю, что есть принятый ответ ... но надеюсь, что вы знаете, что есть поле полей field.Selection. или вы хотите создать чистый веб-сайт? – danidee

ответ

1

Если вам необходимо взаимодействовать с моделями на вашей веб-странице, вам, вероятно, захочется создать контроллер, который может содержать код на Python и позволяет вашей веб-странице взаимодействовать с вашими моделями (внутри вашего модуля или через Odoo in Генеральная). На простом уровне контроллер может войти в основную папку модуля (например, /mymodule/my_template_controller.py) и быть объявлен в вашем файле init.py (импортировать my_template_controller). Затем вы можете установить маршрут в контроллере, который соответствует вашему идентификатору шаблона, и создавать формы на странице XML, которые отправляются на контроллер, позволяя запускать код python и строки данных, которые будут сохранены или вызваны из ваших моделей.

В частности, код, чтобы создать новую строку в модели, используя ОРМ в контроллере, есть первая форма:

<openerp> 
<data> 
<template id="sales_order" name="Sales Order"> 
<t t-call="website.layout"> 
    <form action='/odss/sales_order/' method="POST" enctype="multipart/form-data"> 
    <select type="text" name="delivery_time" class="form-control"> 
     <option value="1">8 AM - 10 AM</option> 
     <option value="2">10 AM - 12 PM</option> 
     <option value="3">12 PM - 2 PM</option> 
     <option value="4">2 PM - 4 PM</option> 
     <option value="5">4 PM - 6 PM</option> 
    </select> 
    </form> 
</t> 
</template> 
</data> 
</openerp> 

Затем в контроллере (называйте, как и объявить его инициализации .py):

Odoo действительно есть некоторые достойные документации, объясняющие процесс. Во-первых, как настроить веб-сайт, с помощью контроллера в качестве посредника между вашей точки зрения и модели:

http://www.odoo.com/documentation/9.0/howtos/website.html

второй том, как использовать то, что называется Object Relational Model (ORM), которая это специальный код Odoo, который позволяет вызывать и сохранять данные в базе данных с контроллера. После того, как у вас есть контроллер, подключенный к веб-странице (по маршруту), то вы можете разместить данные на маршрут в вашей форме и сохранить его в базу данных в контроллере, используя ОРМ:

https://www.odoo.com/documentation/9.0/reference/orm.html

Odoo модули может быть построена, как и любое другое приложение Model/Controller/View, такое как Ruby on Rails, и на самом деле оно довольно функционально.

+0

См. Редактирование вопроса. –

+0

Ваш ответ, вероятно, неверен, потому что мне не нужны контроллеры, когда я делал то же самое, но для другого поля, которое не было ниспадающим, и это сработало. Но если вы настаиваете на том, что мне нужно что-то изменить в контроллерах, тогда отредактируйте свой вопрос, чтобы включить то, что я должен делать в контроллере, или поместить его в качестве комментария. –

+0

Может быть способ опубликовать прямо в модели, но это так, как это делается в примере PHP в вашем вопросе с использованием Odoo, и это то, как я сохранил данные формы в Odoo. Использование t-att-value использует язык шаблонов Odoos Qweb, и эти значения могут быть вызваны только в том случае, если они сгенерированы в вашем контроллере. https: // WWW.odoo.com/documentation/8.0/reference/qweb.html –