How to Implement one line for loop with if and else in Odoo?


Overview

In Python, a one-liner for loop with conditional logic is called a list comprehension (or dictionary/set comprehension). It is used to build new collections (like lists) from an iterable, in a compact and readable form.


✅ Basic Syntax

[<expression_if_true> if <condition> else <expression_if_false> for <item> in <iterable>]

This will evaluate each item and apply either the if_true or else part accordingly.


Example

[ "Even" if x % 2 == 0 else "Odd" for x in range(5) ]

# Output: ['Even', 'Odd', 'Even', 'Odd', 'Even']



🧠 Realistic Odoo Example


Suppose you want to get a list of partner names with a suffix based on whether they have an email:


partners = self.env['res.partner'].search([])

names = [

    partner.name + (' ✅' if partner.email else ' ❌')

    for partner in partners

]


This creates a list of partner names with a check mark if they have an email, or a cross if they do not.



✅ Summary


Element

Description

for x in y

Standard loop

if condition else

Adds conditional logic per item

Usage

Clean, efficient conditional collections