2017-01-24 7 views
0

У меня есть веб-страница, где мне нужно создать несколько полей и переменных динамически.динамическая переменная qweb odoo v8

Позвольте мне объяснить: На первой странице у меня есть текстовое поле, где я должен ввести число пользователей, которых я хочу. Это число передается как параметр на следующую страницу (почтовый метод) и собирается как nb_user на стр. 2.

В template.xml страницы Два у меня есть этот код:

<form method="POST" class="col-md-8" action="/page_three"> 


    <t t-foreach="nb_user" t-as="user"> 
    <input type="text" name="comp_1_user_1" id="comp_1_user_1" class="form-control" placeholder="Computer user"/> 

    </t> 


<input type="submit" class="btn btn-primary" value="Validate"/> 

То, что я хотел бы, что на основе числа, которое передается в посте (nb_user), она должна динамически создавать такое количество текстовые поля ans также создают уникальный идентификатор (comp_1_user_1, comp_1_user_2 и т. д.), чтобы я мог вводить эти данные в свою базу данных.

Итак, если параметр был равен 3, он должен создать 3 текстовых поля и создать 3 переменные comp_1_user_1, comp_1_user_2, comp_1_user_3.

Надеюсь, я был достаточно ясен. Я очень новичок в Odoo и Qweb.

Спасибо за любую помощь, которую вы можете предоставить.

+0

Могу ли я увидеть код для вашего класса модели или вы добавляете данные непосредственно в базу данных? – yorodm

+0

Привет. Данные переносятся в модель, которая добавляет ее в БД. Но эта часть работает нормально. Просто мне нужно генерировать текстовые поля и их атрибуты динамически, основываясь на параметре, который я получаю на предыдущей странице (целое число). –

ответ

0

Чтобы смешивать литералы с нелитераторами, используйте атрибут tf-attf-$name, где $name обозначает атрибут. В качестве параметра вы можете использовать формат-строку, в вашем случае:

<t t-foreach="nb_user" t-as="user"> 
    <input type="text" 
      t-attf-name="comp_1_user_{{ user }}" 
      t-attf-id="comp_1_user_{{ user }}" 
      class="form-control" 
      placeholder="Computer user"/> 
</t> 

Это будет оцениваться Qweb быть атрибутом nameid соответственно) с содержанием оцениваемым в виде строки формата. То есть строка comp1_user_ передается как есть, а содержимое фрагмента {{ user }} оценивается как код Python.

Запуск с массивом, содержащим [1,2,3] вместо nb_user как так

<t t-foreach="[1,2,3]" t-as="user"> 
    <input type="text" 
    t-attf-name="comp_1_user_{{ user }}" 
    t-attf-id="comp_1_user_{{ user }}" 
    class="form-control" 
    placeholder="Computer user"/> 
</t> 

приводит к

enter image description here

с name и id итерация по comp_1_user_1, comp_1_user_2 и comp_1_user_3. Скриншот из Chrome DevTools:

enter image description here

Для получения дополнительной информации see docs.

+0

Большое количество файлов данных. Он работает со списком [1,2,3]. Но в моем случае мне нужно передать параметр, так как число полей должно быть динамическим и собираться на предыдущей странице. Как мне это сделать ?? –

+0

Ваше решение отлично работает. Мне просто пришлось преобразовать в int, прежде чем передавать его в качестве параметра. Большое спасибо за вашу помощь, очень ценю –

Смежные вопросы