[0] 在 Django 查询中是什么意思?
what does [0] mean in django query?
比如我要过滤查询,为什么要在最后写[0]?
order_item = OrderItem.objects.filter(
item=product,
user=self.request.user,
ordered=False
)[0]
当我没有在末尾添加 [0] 时,它会引发类似这样的错误:
Field 'id' expected a number but got <QuerySet [<OrderItem: OrderItem object (5)>]>.
或者在另一种情况下,当我没有在末尾添加 [0] 时,会引发此错误:
'QuerySet' object has no attribute 'items'
将查询设置为可迭代的,以便您可以通过索引(如列表)访问其元素。在这段代码中:
order_item = OrderItem.objects.filter(
item=product,
user=self.request.user,
ordered=False
)
您将获得一个查询集,最后 [0]
将选择其中的第一个元素。像普通的可迭代对象。
您可以将 [0]
替换为 .first()
,例如:
order_item = OrderItem.objects.filter(
item=product,
user=self.request.user,
ordered=False
).first()
它将 return 来自查询集的第一个元素(或者 None
如果查询集为空)。
如果您确定只有一个对象会匹配查询,您可以使用 get()
:
order_item = OrderItem.objects.get(
item=product,
user=self.request.user,
ordered=False
)
比如我要过滤查询,为什么要在最后写[0]?
order_item = OrderItem.objects.filter(
item=product,
user=self.request.user,
ordered=False
)[0]
当我没有在末尾添加 [0] 时,它会引发类似这样的错误:
Field 'id' expected a number but got <QuerySet [<OrderItem: OrderItem object (5)>]>.
或者在另一种情况下,当我没有在末尾添加 [0] 时,会引发此错误:
'QuerySet' object has no attribute 'items'
将查询设置为可迭代的,以便您可以通过索引(如列表)访问其元素。在这段代码中:
order_item = OrderItem.objects.filter(
item=product,
user=self.request.user,
ordered=False
)
您将获得一个查询集,最后 [0]
将选择其中的第一个元素。像普通的可迭代对象。
您可以将 [0]
替换为 .first()
,例如:
order_item = OrderItem.objects.filter(
item=product,
user=self.request.user,
ordered=False
).first()
它将 return 来自查询集的第一个元素(或者 None
如果查询集为空)。
如果您确定只有一个对象会匹配查询,您可以使用 get()
:
order_item = OrderItem.objects.get(
item=product,
user=self.request.user,
ordered=False
)