Django Haystack - 未显示覆盖 SearchForm 中字段的初始值

Django Haystack - initial value for fields in overriden SearchForm not being displayed

在一个我 运行 多年的网站上,我刚刚将 Django 和 Haystack 分别从 1.11.5 和 2.6.1 升级到 2.0.5 和 2.8.1。升级的一切似乎都进行得很顺利,除了我在覆盖的 SearchForm 中提供的 initial 值不再被使用。我不知道为什么。我在 Haystack 的问题跟踪器 here 上发布了一个问题,但我没有收到回复,所以我希望这里的人可能有一些见解。

表格如下:

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>
...

这是生成的渲染的屏幕截图:

如您所见,两个日期都未显示。

请注意,在升级之前,此 确实 有效。我想知道从那时到现在,Haystack 处理 initial 参数的方式是否发生了变化。我已经非常广泛地检查了 Django 和 Haystack 的更新日志,但没有什么让我印象深刻的。

有人对此有任何指导吗?谢谢!

[编辑 - 2017-05-09]
我刚刚尝试将 only Haystack 降级回 2.6.1,这 does 工作。因此,从那时起,Haystack 的 SearchForm 处理 initial 参数的方式一定发生了变化。

我通过尝试在此处列出的每个版本进行了更多调试。 2.7.dev0 有效,但 2.7.0 无效。所以看起来我遇到的错误是在这两个版本之间引入的。请注意,我正在捕获有关我上面提到的问题的所有信息 (here)。

我刚弄明白是怎么回事。经过一些调试,我找到了引入这个错误的提交(具体见https://github.com/django-haystack/django-haystack/issues/1605#issuecomment-387938032)。

我已经向 Haystack 人员指出了确切的错误,希望他们能尽快做出修复。