django - 如何使用 Django-Haystack 预先选择构面(即在页面加载时选中复选框)?

标签 django python-3.x django-haystack faceted-search django-oscar

在下图中,您可以看到当cpu_ Producer == ""(即未选择任何内容)时分面的外观。

enter image description here

在某些情况下,cpu_ Producer 可能是 AMD 或 INTEL,并且在页面加载时必须选中相应方面的复选框。如何在后端选择它以便在前端适当过滤CPU?

if category.slug == 'cpu':
    possible_sockets = '(socket_exact:"LGA1151" OR socket_exact:"LGA2066" OR socket_exact:"AM4" OR socket_exact:"TR4")'
    sqs = sqs.narrow(possible_sockets)

    possible_producers = '(producer_exact:"AMD" OR producer_exact:"INTEL")'
    sqs = sqs.narrow(possible_producers)

    cpu_producer = RECEIVED_VALUE  # "AMD" or "INTEL" or ""

    # I NEED SOMETHING LIKE THIS.
    if cpu_producer:
        sqs.PRESELECT(producer=cpu_producer)

最佳答案

源代码挖掘让我找到了文件haystack/forms.py。看来 FacetedSearchForm 类应该被重写。

但是就我而言,仅使用如下网址是可以接受的:

<a href="{{request.get_full_path}}cpu/?selected_facets=vendor_exact%3AAMD">
    <img src="{% static 'logo/amd.jpg' %}" alt="{{ cpu_producer.title }}" />
</a>

这会导致 cpu 页面,并且由于 ?selected_facets=vendor_exact%3AAMD 部分会自动选择 Producer 方面(即本例中的 AMD)。

关于django - 如何使用 Django-Haystack 预先选择构面(即在页面加载时选中复选框)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54726372/

相关文章:

django - 每个执行的 sql 语句的信号/方法

python-3.x - NoSQL 数据库 : ArangoDB

python - 有没有更好的方法来检查按顺序更改的值?

django - 带有django-haystack的Elasticsearch自动运行更新索引

python - Django: AttributeError: 模块 'User.views' 没有属性 'User'

python - Django 表单图像字段出现在 self.data 中但没有出现在 self.cleaned_data 中

Django ModelAdmin get_object 优化

python - imshow奇怪的cv2行为

python - 使用 Elasticsearch 后端使 “more like this”无法在Haystack中返回任何结果

django - 像这样的干草堆更会忽略过滤器