错误:' QuerySet'对象没有属性,即使该属性存在

时间:2018-02-13 10:51:24

标签: django django-queryset

我有以下代码:

  company = Company.objects.filter(account=self.account).only('slug')
        if company:
            return redirect(reverse_lazy('company:detail_a', kwargs={'slug': company.slug}))

我收到错误:

'QuerySet' object has no attribute 'slug'

slug属性肯定存在(在模型/数据库中检查)。我试图像在模板中一样访问它。

所以我尝试了其他属性' name',因为在我打印QuerySet时会出现。

所以我认为QuerySet没有被评估或类似的东西,但我不知道如何强迫它。

3 个答案:

答案 0 :(得分:2)

QuerySet是一组实例。该集合没有任何这些属性;只有个别实例才有。

如果您想获得单个实例,请使用get代替filter

答案 1 :(得分:1)

如果您希望单个对象不是查询集,则

filter将返回一个不是模型对象的查询集,尝试使用第一个

过滤器
  company = Company.objects.filter(account=self.account).only('slug').first()
  if company:
      return redirect(reverse_lazy('company:detail_a', kwargs={'slug': company.slug}))

OR

company = Company.objects.only('slug').get(account=self.account)
  if company:
      return redirect(reverse_lazy('company:detail_a', kwargs={'slug': company.slug}))

答案 2 :(得分:0)

如果您尝试在详细信息页面上使用它,试试这个

 <a href="{{ object.get_add_to_cart_url }}" class="cart-btn">Add to cart</a>

代替

    <a href="{{ item.get_add_to_cart_url }}" class="cart-btn">Add to cart</a>