【问题标题】:django return querylist instead of one item querydjango 返回查询列表而不是一项查询
【发布时间】:2019-09-03 16:38:42
【问题描述】:

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

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

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

我想要这样的东西

<Product: Product object (2)>

所以我可以访问该对象的字段,例如 product.price

【问题讨论】:

    标签: django django-queryset django-orm


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      如果您知道结果中只有一项,您可以使用 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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-16
        • 2021-07-01
        • 2017-08-22
        • 1970-01-01
        • 2021-01-19
        • 1970-01-01
        • 2019-01-16
        • 1970-01-01
        相关资源
        最近更新 更多