How to Implement sorted + lambda  in Odoo?
What is sorted()?
The sorted() function returns a new sorted list from the items in an iterable.
What is lambda?
lambda is used to create anonymous functions, often for simple operations like extracting sort keys.

✅ Syntax

sorted(iterable, key=lambda x: x.field_name)
  • iterable: List or Odoo recordset
  • key: A function (usually lambda) that returns the value to sort by

📌 Realistic Use Cases in Odoo

1. Sort Sale Orders by Total Amount

sorted_orders = sorted(self.env[‘sale.order’].search([]), key=lambda o: o.amount_total)
This returns a list of sale orders sorted by their amount_total in ascending order.

2. Sort Partners by Number of Sale Orders (Descending)

partners = self.env[‘res.partner’].search([]) sorted_partners = sorted(partners, key=lambda p: len(p.sale_order_ids), reverse=True)
This gives you partners with the most orders first.

3. Sort Product Variants by Attribute Value (e.g., Size)

variants = self.product_variant_ids

sorted_variants = sorted(variants, key=lambda v: v.product_template_attribute_value_ids.filtered(lambda a: a.attribute_id.name == ‘Size’).name)

This sorts product variants by their “Size” attribute value.

✅ Summary Table

Function Purpose Example Use Case
sorted() Return a sorted list Order records, partners, products
lambda in key Define sort logic inline Sort by amount, length, custom field
reverse=True (optional) Descending order Sort by latest, highest, largest