Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django:AttributeError:';Q';对象没有属性';计数';_Python_Django - Fatal编程技术网

Python Django:AttributeError:';Q';对象没有属性';计数';

Python Django:AttributeError:';Q';对象没有属性';计数';,python,django,Python,Django,我试图统计所有与会者的人数。我为循环和查询集创建了以下。但是,我总是得到错误AttributeError:'Q'对象没有属性'count'。你有办法解决这个问题吗 # Get count of attendees per ticket and then combine these tickets = Ticket.objects.filter(event=3) count = 0 for ticket in tickets: new_count = ticket.attendees.fi

我试图统计所有与会者的人数。我为循环和查询集创建了以下
。但是,我总是得到错误
AttributeError:'Q'对象没有属性'count'
。你有办法解决这个问题吗

# Get count of attendees per ticket and then combine these
tickets = Ticket.objects.filter(event=3)
count = 0
for ticket in tickets:
    new_count = ticket.attendees.filter=Q(
        canceled=False,
        order__status__in=(
            OrderStatus.PAID,
            OrderStatus.PENDING,
            OrderStatus.PARTIALLY_REFUNDED,
            OrderStatus.FREE,
        ),
    ).count()
    count += new_count
print(count)

您分配给
.filter
:注意您编写了
.filter=Q(
),而不是
.filter(Q(…)

您可以通过以下方法解决此问题:

tickets = Ticket.objects.filter(event=3)
count = 0
for ticket in tickets:
    new_count = ticket.attendees.filter(
        canceled=False,
        order__status__in=(
            OrderStatus.PAID,
            OrderStatus.PENDING,
            OrderStatus.PARTIALLY_REFUNDED,
            OrderStatus.FREE,
        )
    ).count()
    count += new_count
print(count)
tickets=Ticket.objects.filter(事件=3)
计数=0
车票中的车票:
新建计数=ticket.attendes.filter(
取消=错误,
订单状态=(
OrderStatus.PAID,
OrderStatus.PENDING,
订单状态。部分退款,
OrderStatus.FREE,
)
).count()
计数+=新计数
打印(计数)
话虽如此,我认为您只需打一个电话就可以更有效地处理此问题,如下所示:

Attendee.objects.filter(
    ticket__event=3,
    canceled=False,
    order__status__in=(
        OrderStatus.PAID,
        OrderStatus.PENDING,
        OrderStatus.PARTIALLY_REFUNDED,
        OrderStatus.FREE,
    )
).count()
Attendee.objects.filter(
票证事件=3,
取消=错误,
订单状态=(
OrderStatus.PAID,
OrderStatus.PENDING,
订单状态。部分退款,
OrderStatus.FREE,
)
).count()

因此,在这里,我们为
事件=3
计算持有
票证的
与会者的人数。这可能比进行n次查询更有效。

您分配给
.filter
:请注意,您编写了
.filter=Q(
),而不是
.filter(Q(…)

您可以通过以下方法解决此问题:

tickets = Ticket.objects.filter(event=3)
count = 0
for ticket in tickets:
    new_count = ticket.attendees.filter(
        canceled=False,
        order__status__in=(
            OrderStatus.PAID,
            OrderStatus.PENDING,
            OrderStatus.PARTIALLY_REFUNDED,
            OrderStatus.FREE,
        )
    ).count()
    count += new_count
print(count)
tickets=Ticket.objects.filter(事件=3)
计数=0
车票中的车票:
新建计数=ticket.attendes.filter(
取消=错误,
订单状态=(
OrderStatus.PAID,
OrderStatus.PENDING,
订单状态。部分退款,
OrderStatus.FREE,
)
).count()
计数+=新计数
打印(计数)
话虽如此,我认为您只需打一个电话就可以更有效地处理此问题,如下所示:

Attendee.objects.filter(
    ticket__event=3,
    canceled=False,
    order__status__in=(
        OrderStatus.PAID,
        OrderStatus.PENDING,
        OrderStatus.PARTIALLY_REFUNDED,
        OrderStatus.FREE,
    )
).count()
Attendee.objects.filter(
票证事件=3,
取消=错误,
订单状态=(
OrderStatus.PAID,
OrderStatus.PENDING,
订单状态。部分退款,
OrderStatus.FREE,
)
).count()

因此,在这里,我们为
event=3
计算拥有
ticket
与会者的数量。这可能比进行n次查询更有效。

正确的语法是:
…attendes.filter(Q(…).count()
。没有额外的
=
。这样
count()
是在
Queryset
上调用的,而不是
Q
对象。谢谢!另外,似乎根本不需要
Q
。@Joey Coder:不,通常只有当您想写逻辑or,或者当您想作为对象传递过滤器(例如作为参数等)时才需要
Q
正确的语法应该是:
…attenders.filter(Q(…).count()
。那里没有额外的
=
。这样
count()
是在
Queryset
上调用的,而不是
Q
对象。谢谢!另外,似乎根本不需要
Q
。@Joey Coder:不,通常只有当您想写逻辑or,或者当您想作为对象传递过滤器(例如作为参数等)时才需要
Q