Django Haystack - начальное значение для полей в переопределенной SearchForm не отображается - PullRequest
0 голосов
/ 08 мая 2018

На сайте, где я работаю годами, я только что обновил Django и Haystack с 1.11.5 и 2.6.1 соответственно до 2.0.5 и 2.8.1 соответственно. Кажется, все с обновлением прошло гладко, за исключением того, что значения initial, которые я предоставляю в переопределенном SearchForm, больше не используются. Я не могу понять, почему. Я опубликовал проблему на трекере проблем Haystack здесь , но я не получил ответа, поэтому я надеюсь, что кто-то здесь может иметь некоторое понимание.

Вот форма:

from haystack.forms import SearchForm

class SearchForm(SearchForm):                                            
    start_date = forms.DateField(initial=Post.get_first_post_timestamp(),
                                 input_formats=['%Y-%m-%d'])
    end_date = forms.DateField(initial=datetime.date.today,
                               input_formats=['%Y-%m-%d'])
    thread_type = forms.ChoiceField(choices=[('All Types', 'All Types')] + Thread.get_sorted_unique_types_choices())

Вот вид:

import haystack.generic_views

from apps.listserv.forms import SearchForm

class SearchView(haystack.generic_views.SearchView):
    template_name = 'listserv/search.html'
    form_class = SearchForm
    results_per_page = 10

Вот шаблон:

...
[{{ form.start_date.value }}]

<form action="." method="get">
    <p style="text-align: center; font-weight: bold;">Search: {{ form.q }}</p>
    <p style="text-align: center; font-weight: bold;">Dates: {{ form.start_date }} to {{ form.end_date }}</p>
    <p style="text-align: center; font-weight: bold;">Thread Type: {{ form.thread_type }}</p>
    <p style="text-align: center;"><input type="submit" value="Search"></p>
</form>
...

Вот скриншот полученного рендера:

render

Как видите, ни одна дата не отображается.

Обратите внимание, что до обновления это работало . Мне интересно, если что-то изменилось между тем и сейчас в том, как initial параметры обрабатываются с Haystack. Я довольно тщательно проверил списки изменений в Django и Haystack, но у меня ничего не вышло.

У кого-нибудь есть указания по этому поводу? Спасибо!

[РЕДАКТИРОВАТЬ - 2017-05-09]
Я только что попытался понизить only Haystack до 2.6.1, и это работает . Итак, что-то должно было измениться с тем, как SearchForm Haystack обрабатывает initial параметры с тех пор.

Я сделал немного больше отладки, попробовав каждый релиз, перечисленный здесь . 2.7.dev0 работает , но 2.7.0 работает , а не . Похоже, ошибка, с которой я столкнулся, была введена между этими двумя версиями. Обратите внимание, что я собираю всю эту информацию по проблеме, о которой я упоминал выше ( здесь ).

1 Ответ

0 голосов
/ 10 мая 2018

Я только что понял, что происходит. После некоторой отладки я обнаружил коммит, который привел к этой ошибке (подробности см. https://github.com/django-haystack/django-haystack/issues/1605#issuecomment-387938032).

Я указал точную ошибку парням из Хейстека, так что, надеюсь, они скоро ответят с исправлением.

...