Joey Coder
Joey Coder

Reputation: 3489

Django: for loop and if condition in one line

I want to bring if dynamic_tickets: and for ticket in dynamic_tickets: in one line. I always receive a syntax error. Do you have an idea, how to achieve that?

def adjust_prices():
    events = Event.objects.filter(status=EventStatus.LIVE)
    active_events = [event for event in events if not event.is_over]

    for active_event in active_events:
        dynamic_tickets = [
            ticket for ticket in active_event.tickets.all() if ticket.dynamic_pricing_activated()
        ]
        if dynamic_tickets:
            for ticket in dynamic_tickets:
                print(ticket)
                print("DO OTHER STUFF")

Upvotes: 0

Views: 1078

Answers (1)

Aman Prajapati
Aman Prajapati

Reputation: 139

No need to use 'if dynamic_tickets:' , because when the list 'dynamic_tickets' will not be empty then only for loop will execute. just write the code like this:

def adjust_prices():
    events = Event.objects.filter(status=EventStatus.LIVE)
    active_events = [event for event in events if not event.is_over]

    for active_event in active_events:
        dynamic_tickets = [
            ticket for ticket in active_event.tickets.all() if 
            ticket.dynamic_pricing_activated()
           ]

        for ticket in dynamic_tickets:
            print(ticket)
            print("DO OTHER STUFF")

Upvotes: 3

Related Questions