我正试图在单个过滤器中使用3个或3个语句,但是它不起作用。
cart = carts.filter(Q(status='completed') | Q(status='paid') | Q(status='started'))
您知道正确的语法是什么吗?
谢谢!
答案 0 :(得分:0)
您所拥有的是正确的:
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
还可以考虑使用状态常量(而不是字符串)。