在我已运行多年的网站上,我刚刚将Django和Haystack分别从1.11.5和2.6.1升级到2.0.5和2.8.1。除了我在覆盖initial
中提供的SearchForm
值不再被使用之外,升级的所有内容似乎都很顺利。我无法弄清楚为什么。我在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]
我只是尝试将仅干草堆降级回2.6.1,这个做工作。因此,Haystack的SearchForm
处理initial
参数的方式必定会发生变化。
我通过尝试列出here的每个版本进行了一些调试。 2.7.dev0 工作,但2.7.0 不。因此看起来我正在经历的错误是在这两个版本之间引入的。请注意,我正在捕获有关上述问题的所有信息(here)。
答案 0 :(得分:0)
我只知道发生了什么。经过一些调试后,我发现了引入此bug的提交(详见https://github.com/django-haystack/django-haystack/issues/1605#issuecomment-387938032)。
我已经向Haystack家伙指出了确切的错误,所以希望他们能尽快回复。