Django: для цикла и условия в одной строке - PullRequest
0 голосов
/ 25 марта 2019

Я хочу привести 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")

1 Ответ

2 голосов
/ 25 марта 2019

Нет необходимости использовать 'if dynamic_tickets:', потому что когда список '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()
           ]

        for ticket in dynamic_tickets:
            print(ticket)
            print("DO OTHER STUFF")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...