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` 属性或覆盖 `.get_queryset()` 方法的视图上应用 DjangoModelPermissions