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

Posted

技术标签:

【中文标题】AttributeError: \'QuerySet\' 对象没有属性 \'add\'【英文标题】: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'

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

【问题讨论】:

看这个:how to create an empty queryset and to add objects manually in 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 来做到这一点。好吧,我将只使用一个列表。

以上是关于AttributeError: 'QuerySet' 对象没有属性 'add'的主要内容,如果未能解决你的问题,请参考以下文章

Django QuerySet 对象没有属性'objects

Django 1.2 等价于 QuerySet.query.as_sql()

检索多对多字段的类

queryset特性和queryset优化

无法在没有 `.queryset` 属性或覆盖 `.get_queryset()` 方法的视图上应用 DjangoModelPermissions

093:QuerySet API详解-QuerySet转换为SQL的条件