Django Haystack - начальное значение для полей в переопределении SearchForm не отображается

64
11

На сайте, который я запускал в течение многих лет, я просто обновил как 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, но на меня ничего не выпрыгивает.

Кто-нибудь имеет какие-либо рекомендации по этому поводу? Спасибо!

[EDIT - 2017-05-09]
Я просто попытался понизить только Haystack до 2.6.1, и это действительно работает. Итак, что-то должно измениться с тем, как Haystack SearchForm обрабатывает initial параметры с тех пор.

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

спросил(а) 2021-01-25T15:35:33+03:00 4 месяца, 3 недели назад
1
Решение
140

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

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

ответил(а) 2021-01-25T15:35:33+03:00 4 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема