То, что вы имеете, правильно:
cart = carts.filter(Q(status='completed') | Q(status='paid') | Q(status='started'))
Вы можете просто использовать in
:
cart = carts.filter(status__in=['completed', 'paid', 'started'])
Когда вы говорите, что это не работает, я предполагаю, что вы не получаете никаких результатов.Вам следует: * проверить фактические status
значения, которые вы имеете в БД, и те, что находятся в вашем предварительно отфильтрованном списке carts
:
set(Cart.objects.values_list('status', flat=True)) # full list of statuses
set(carts.values_list('status', flat=True)) # statuses for your pre-filter
Также рассмотрите возможность использования констант для ваших статусов (вместостроки).