Как предварительно выбрать фасеты (то есть установить флажок при загрузке страницы), используя Django-Haystack? - PullRequest
0 голосов
/ 16 февраля 2019

На изображении ниже вы можете видеть, как выглядят грани, когда cpu_producer == "" (т.е. ничего не выбрано).

enter image description here

Существуют обстоятельства, когда cpu_producer может быть AMD или INTEL, и при загрузке страницы должен быть установлен флажок соответствующего фасета.Как выбрать его во внутреннем интерфейсе, чтобы получить во внешнем фильтре соответствующим образом отфильтрованный процессор?

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)

1 Ответ

0 голосов
/ 19 февраля 2019

Копание исходного кода привело меня к файлу haystack/forms.py.Кажется, что класс FacetedSearchForm должен быть переопределен.

Однако в моем случае было приемлемо просто иметь URL-адрес, такой как:

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

, который ведет на страницу процессора и из-зачасть ?selected_facets=vendor_exact%3AAMD автоматически выбирает фасет производителя (т.е. в данном случае AMD).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...