django返回查询列表,而不是一项查询

时间:2019-09-03 16:38:42

标签: django django-queryset django-orm

我正在使用过滤器在Django模型中查询,但是 我希望django返回一个查询,而不是查找查询列表

product = Product.objects.filter(slug=slug)

返回<QuerySet [<Product: Product object (2)>]>

相反,我想要这样的东西

<Product: Product object (2)>

所以我可以访问product.price之类的对象的字段

2 个答案:

答案 0 :(得分:0)

您正在使用将返回查询集的过滤器。如果您想要一项符合条件的项目,请使用get。

product = Product.objects.get(slug=slug)

答案 1 :(得分:0)

如果您知道结果中只有一项,则可以使用first

直接访问
product = Product.objects.filter(slug=slug).first()

或使用get

from django.core.exceptions import ObjectDoesNotExist
try:
    p = Product.objects.get(slug=slug)
except ObjectDoesNotExist:
    print("That product doesn't exist.")

如果您的结果中有项目列表,请对其进行迭代:

products = Product.objects.filter(slug=slug)
for product in products:
     print(product.price)
相关问题