Skip to Content
Menu
This question has been flagged
1 Reply
1711 Views

Hi !


I'm doing a search to create a qweb page displaying products and size variants.
I want to have variants sorted by attribute sequence !!
the query in .py file :
produits=request.env['product.template'].search([],0,200,'id desc ')

in Xml views, I unsuccessfully tried :
<t t-set="attribute" t-value="my_query.product_variant_ids" t-options="{'order by': 'sequence'}"/>
and I use a loop to display them

<t t-foreach="attribute" t-as="size">

Can anyone explain how to do it

Avatar
Discard
Best Answer

Hi,

We are also directly using a sorted function in the XML 

Can you please try with the following syntax for sorting by attributes sequence?

<t t-foreach="my_query.product_variant_ids.sorted(key=lambda m: m.attribute_id.sequence)" t-as="size" >

Thank you!

Regards,




Email:      odoo@aktivsoftware.com  

Skype: kalpeshmaheshwari

   

Avatar
Discard
Author

Hi !

Thanks a lot for your interest !

Nice that the lambda sort works directly !!

I tried your code, but maybe I don't really know where to use it, as I use a <t t-set in place of your foreach.

So I didn't on which foreach I should write your code ?

First I have a foreach named "toto" that display the product request from my class in .py file.

In second I have a foreach named "tutu" to display all the variants for each product (in the last try I wrote the sorting code here)

But wherever I write this code I have a qweb error !?

Here is my full code with the sort code (so not working) :

<table border="0">

<t t-foreach="produits" t-as="toto">

<tr bgcolor="#FFF7F7">

<th nowrap="nowrap"></th>

<th coslpan="2" valign="bottom"><P t-esc="toto.name"/></th>

<th><t t-esc="toto.list_price"/> € / <strike><t t-esc="toto.x_studio_pvpc_eur"/> €</strike></th>

</tr>

<tr>

<td><span t-field="toto.image_128" t-options="{'widget': 'image', 'preview_image': 'image_1024' if product_image_big else 'image_128'}" width="50" class="d-flex h-50 justify-content-center align-items-center"/></td>

<td>

<table border="0">

<tr>

<t t-set="attribute" t-value="toto.product_variant_ids"/>

<t t-set="index_i" t-value="1"/>

<t t-foreach="attribute.product_variant_ids.sorted(key=lambda m: m.attribute_id.sequence)" t-as="tutu">

<t t-if="index_i==10 or index==5">

<tr bgcolor="#FFF7F7"></tr>

</t>

<td><table><tr><td bgcolor="#FFF7F7"><t t-esc="tutu.product_template_attribute_value_ids.name" class=""/></td><td bgcolor="#FEFBFB"><font size="xsmall"> : <t t-if="int(tutu.qty_available)&lt;=0"><font color="brown"> 0 </font></t><t t-else=""><font color="green"> <t t-esc="int(tutu.qty_available)"/></font></t> </font> <t t-set="index_i" t-value="index_i+1"/></td></tr><tr><td colspan="2"><input type="text" size="3" value="0"></input><input type="hidden" size="3" value="tutu.default_code"></input></td></tr></table>

</td>

</t>

</tr>

</table>

Thanks a lot !

Author

Hi !

Can't make it work, I have object has no attribute 'sequence'

Thansk a lot !

Related Posts Replies Views Activity
1
Oct 15
4016
0
Nov 24
92
2
Apr 23
6951
1
Apr 23
2376
2
Dec 23
11087