Django 如何从Haystack SearchQuerySet中删除项目

Django 如何从Haystack SearchQuerySet中删除项目,django,django-queryset,django-haystack,Django,Django Queryset,Django Haystack,在Django中,您可以按照文档中的说明从QuerySet中删除项: Haystack是在QuerySet上构建的,但似乎没有实现remove方法。有人知道如何删除SearchQuerySet中的项目吗 FWIW我正在尝试对客户端进行第二级过滤。基本上,我在搜索查询集上进行交互,寻找一些特定的属性。我的想法是,如果他们没有,我想移除他们 谢谢您是否尝试过使用排除?即 searchqueryset = searchqueryset.exclude(id=u'myapp.mymodel.%s' %

在Django中,您可以按照文档中的说明从QuerySet中删除项:

Haystack是在QuerySet上构建的,但似乎没有实现remove方法。有人知道如何删除SearchQuerySet中的项目吗

FWIW我正在尝试对客户端进行第二级过滤。基本上,我在搜索查询集上进行交互,寻找一些特定的属性。我的想法是,如果他们没有,我想移除他们


谢谢

您是否尝试过使用
排除
?即

searchqueryset = searchqueryset.exclude(id=u'myapp.mymodel.%s' % item.pk)

您是否尝试过使用
排除
?即

searchqueryset = searchqueryset.exclude(id=u'myapp.mymodel.%s' % item.pk)

我看到这个解决方案的一个问题是searchqueryset是否搜索不同的模型。然后,您将排除所有带有
pk=item.pk的对象,这是您不想做的

这是我使用的方法。我将searchqueryset转换为一个列表:

searchqueryset_list = list(searchqueryset)
然后我可以删除该项目:

searchqueryset_list.remove(item)

虽然*searchqueryset_list*不是searchqueryset对象,但我可以在呈现html页面的模板中使用它。

我看到这个解决方案的一个问题是,searchqueryset是否通过不同的模型进行搜索。然后,您将排除所有带有
pk=item.pk的对象,这是您不想做的

这是我使用的方法。我将searchqueryset转换为一个列表:

searchqueryset_list = list(searchqueryset)
然后我可以删除该项目:

searchqueryset_list.remove(item)

虽然*searchqueryset_list*不是searchqueryset对象,但我可以在呈现html页面的模板中使用它。

这最好作为Haystack的错误报告。如果他们未能实现自定义QuerySet,以致它仍然像标准QuerySet一样工作,那就是一个bug,他们应该修复它。我认为这不是bug。也许是一个增强,但我问,因为我肯定有其他人遇到了这一点。这意味着我将提交一个增强请求。语义,真的,但是如果你要取代默认功能,你的覆盖应该支持所有相同的行为。这使它成为一个bug。无论如何,如果没有
remove
,就无法从queryset中删除单个项,因此用Haystack提交某种bug/feature请求就是解决方案。如果将查询集转换为列表,则可以使用
list.remove
,但这样会丢失查询集功能。
remove
难道不是对相关项的查询集唯一有效的方法吗?这最好作为Haystack的错误报告。如果他们未能实现自定义QuerySet,以致它仍然像标准QuerySet一样工作,那就是一个bug,他们应该修复它。我认为这不是bug。也许是一个增强,但我问,因为我肯定有其他人遇到了这一点。这意味着我将提交一个增强请求。语义,真的,但是如果你要取代默认功能,你的覆盖应该支持所有相同的行为。这使它成为一个bug。无论如何,如果没有
remove
,就无法从queryset中删除单个项,因此用Haystack提交某种bug/feature请求就是解决方案。如果您将查询集转换为列表,则可以使用
list.remove
,但随后您将失去查询集功能。
remove
是否仅是对相关项的查询集有效的方法?我将为此向您表示感谢,因为我最后所做的就是这样。(就在你发帖之前)我会把这归功于你,因为这就是我最后所做的。(就在你发帖之前)