在下面的图片中,您可以看到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)
答案 0 :(得分:2)
通过源代码挖掘,我找到了文件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)。
答案 1 :(得分:0)
您可以使用JavaScript。页面加载后,获取所有GET参数并迭代每个复选框:
function setCheckedItems() {
var all_params = getQueryParams(); // GET params
$.each( all_params, function( key, value ) {
id = decodeURIComponent(key).replace(/\s/g,'');
$('#'+id).attr('checked', 'checked');
});
}