首页 > 解决方案 > Django:for循环和if条件在一行

问题描述

我想把if dynamic_tickets:for ticket in dynamic_tickets:放在一条线上。我总是收到语法错误。你有一个想法,如何实现?

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")

标签: pythondjango

解决方案


不需要使用 'if dynamic_tickets:' ,因为当列表 'dynamic_tickets' 不为空时,只会执行 for 循环。只需编写如下代码:

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")

推荐阅读