【问题标题】:AttributeError: 'QuerySet' object has no attribute 'add'AttributeError: 'QuerySet' 对象没有属性 'add'
【发布时间】:2017-07-19 13:48:09
【问题描述】:

我尝试定义一个函数,将元素添加到一个新的空查询集并返回它。我的函数的当前版本如下所示:

def get_colors(*args, **kwargs):
    colors = Color.objects.none()
    for paint in Paint.objects.all():
        if paint.color and paint.color not in colors:
            colors.add(paint.color)
    return colors

我收到错误消息:

AttributeError: 'QuerySet' 对象没有属性 'add'

为什么我不能向空查询集添加元素?我究竟做错了什么?

【问题讨论】:

标签: python django


【解决方案1】:

我不认为你可以这样做。 QuerySet 可以被认为是列表的扩展,但并不相同。

如果您需要返回颜色,您可以这样做。

def get_colors(*args, **kwargs):
    colors = []
    for paint in Paint.objects.all():
        if paint.color and paint.color not in colors:
            colors.append(paint.color)
    return colors

【讨论】:

  • 这不起作用,因为QuerySet 也没有append 方法。请在发布前试用您的代码。
  • 我不是追加到查询集而是列表。你有没有改变第二行?
  • 对不起,我的错!没有完全阅读您的代码!您应该在回答中提到您使用list 而不是QuerySet 来保存colors。好答案,无论如何。
  • 感谢你们俩。我只是希望有一种方法可以使用 QuerySet 来做到这一点。好吧,我将只使用一个列表。
猜你喜欢
  • 1970-01-01
  • 2016-11-20
  • 2019-07-10
  • 2020-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-08
  • 2022-12-10
相关资源
最近更新 更多