在下图中,您可以看到当cpu_ Producer == ""
(即未选择任何内容)时分面的外观。
在某些情况下,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/