Enable Dark Mode!
By: Linto

Basic Qweb Operations


Qweb is a template engine or reporting engine which can be used to create reports. Odoo uses Qweb for generating reports. Qweb provides several tools for creating a report. By using Qweb, we can manipulate the data very easily.
We will discuss the basic features available in Qweb for creating a report. We use XML attributes prefixed by ‘t-’ for performing the operations.
Just like any other programming language, we can define a new variable, assign a value to it, and use it in our template.
How to define a variable
t-set can be used to define a new variable and set its value.
Syntax is,
<t t-set=”variable_name” t-value=”value of the variable” />
<t t-set=”count” t-value=”0” />  
This will create a new variable ‘count’ and set its value as zero. We can set the value of this variable using a function.
<t t-set=”count” t-value=”my_function()” /> 
Here, the value of ‘count’ will be the value returned from the function ‘my_function’. When we define a variable, we don’t need to specify a specific type of this variable. We can have several types of values such as numbers, strings, arrays (lists) and dictionaries, etc. If we need to define a dictionary, we can do it like this,
<t t-set=”my_dict” t-value=”{'my': 'first', 'my2': 'second' }” /> 
Just like this, we can use lists also. Iterating over the different values of a list or dictionary can be achieved by using a loop.
In order to output a value, qweb provides t-esc and t-raw directives. The commonly used one is t-esc.
<t t-esc="value"/>
t-esc will evaluate the variable and print the content of that variable. The difference between t-esc and t-raw is, t-esc will automatically HTML-escape its content while t-raw won’t.
Conditional Operators
After setting a variable, we can perform our operations on that variable. We can use t-if to perform any conditional operations. The basic syntax is as follows. 
<t t-if=”condition”> <do your operations></t>
<t t-if=”count==0”><t t-set=”count” t-value=”1” /></t>	
This will first check if the value of ‘count’ is zero or not. If yes, the contents inside the t-if will be executed.
The ‘else’ condition can be achieved by using a ‘not’ before the condition in the t-if tag. The ‘not’ can be used to reverse the condition. i.e just like the else condition.
<t t-if=”not count==0”><t t-set=”count” t-value=”1” /></t>
If we need to include multiple conditions, we can use ‘and’ or ‘or’. 
<t t-if=”not (count==0 or count ==1)”><t t-set=”count” t-value=”1” /></t>
In some cases, we may need to iterate over a set of values. Suppose we have a list or a dictionary with us and we need to iterate through each value, in this case, we can use t-for each for this purpose.
<t t-foreach=”[1,2,3]” t-as=”i”>
<t t-esc=”i” /> 
This will iterate over the list [1, 2, 3] and prints each element one by one.
Calling Other Templates
Calling other templates from qweb can be achieved using the t-call directive. This can be used for top-level rendering or within a template.
<t t-call="other_template"/>
Handling Fields
When we are handling fields, we can use a t-field directive ( the result of the browser method). t-field-options can be used for customizing these fields. The widget is one of the most common options used with t-field options. We can have different types of widgets for different types of values.

If you need any assistance in odoo, we are online, please chat with us.



Cybrosys Technologies Pvt. Ltd.
Neospace, Kinfra Techno Park
Kakkancherry, Calicut
Kerala, India - 673635



Cybrosys Technologies Pvt. Ltd.
1st Floor, Thapasya Building,
Infopark, Kakkanad,
Kochi, India - 682030.



Cybrosys Techno Solutions
The Estate, 8th Floor,
Dickenson Road,
Bangalore, India - 560042

Send Us A Message