2017-01-24 4 views
0

Ich habe eine Webseite, wo ich dynamisch eine Anzahl von Feldern und Variablen erstellen muss.dynamische Variable qweb odoo v8

Lassen Sie mich erklären: auf der ersten Seite, habe ich ein Textfeld, in dem ich habe die Anzahl der Benutzer schreiben was ich will. Diese Zahl wird als Parameter an die nächste Seite (Post-Methode) übergeben und als nb_user auf der Seite Two gesammelt.

Im template.xml der Seite Zwei ich habe diesen Code:

<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"/> 

Was würde ich ist wie das auf der Anzahl basiert, die in der Post (nb_user) übergeben wird, es dynamisch die Menge an schaffen soll Textfelder und erstellen auch eindeutige ID (comp_1_user_1, comp_1_user_2 etc ....), so dass ich diese Daten in meine Datenbank eingeben kann. So

, wenn der Parameter 3 wurde dann sollte es drei Textfelder erstellen und erstellen 3 Variablen comp_1_user_1, comp_1_user_2, comp_1_user_3.

Ich hoffe, dass ich klar genug war. Ich bin sehr neu in Odoo und Qweb.

Vielen Dank für Ihre Hilfe.

+0

Kann ich den Code für Ihre Modellklasse sehen oder fügen Sie die Daten direkt zur Datenbank hinzu? – yorodm

+0

Hallo. Die Daten werden an ein Modell übertragen, das sie der Datenbank hinzufügt. Aber dieser Teil funktioniert gut. Es ist nur so, dass ich Textfelder und ihre Attribute dynamisch generieren muss, basierend auf einem Parameter, den ich auf der vorherigen Seite (Ganzzahl) erhalten habe. –

Antwort

0

Um Literale mit Nichtliteralen zu mischen, verwenden Sie das Attribut tf-attf-$name, wobei $name für das erforderliche Attribut steht. Als Parameter können Sie dann ein Format-String, in Ihrem Fall verwenden:

<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> 

Dies wird durch Qweb ausgewertet wird, dass sie das Attribut name (und id jeweils) mit dem als Format-String ausgewertet Inhalt. Das heißt, die Zeichenfolge comp1_user_ wird so übergeben, wie sie ist, und der Inhalt des {{ user }}-Snippets wird als Python-Code ausgewertet.

Flucht mit einem Array von nb_user[1,2,3] statt wie so

<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> 

führt zu

enter image description here

mit name und id iterieren comp_1_user_1, comp_1_user_2 und comp_1_user_3 enthält. Screenshot von Chrome DevTools:

enter image description here

Weitere Informationen see docs.

+0

Vielen Dank Datendatei. Es funktioniert Datei mit einer Liste [1,2,3]. Aber in meinem Fall muss ich einen Parameter übergeben, da die Anzahl der Felder dynamisch sein und auf der vorherigen Seite gesammelt werden muss. Wie kann ich das machen ?? –

+0

Ihre Lösung funktioniert gut. Ich musste nur in int konvertieren, bevor ich es als Parameter übergeben habe. Vielen Dank für Ihre Hilfe, sehr geschätzt –

Verwandte Themen