На сайте, где я работаю годами, я только что обновил 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](https://i.stack.imgur.com/5qzjI.png)
Как видите, ни одна дата не отображается.
Обратите внимание, что до обновления это работало . Мне интересно, если что-то изменилось между тем и сейчас в том, как initial
параметры обрабатываются с Haystack. Я довольно тщательно проверил списки изменений в Django и Haystack, но у меня ничего не вышло.
У кого-нибудь есть указания по этому поводу? Спасибо!
[РЕДАКТИРОВАТЬ - 2017-05-09]
Я только что попытался понизить only Haystack до 2.6.1, и это работает . Итак, что-то должно было измениться с тем, как SearchForm
Haystack обрабатывает initial
параметры с тех пор.
Я сделал немного больше отладки, попробовав каждый релиз, перечисленный здесь . 2.7.dev0 работает , но 2.7.0 работает , а не . Похоже, ошибка, с которой я столкнулся, была введена между этими двумя версиями. Обратите внимание, что я собираю всю эту информацию по проблеме, о которой я упоминал выше ( здесь ).