J'ai un django-haystack de base fonctionnant correctement, mais maintenant j'essaye de créer un formulaire de recherche personnalisé qui inclut un ou deux champs supplémentaires à filtrer.Django Haystack Formulaire de Recherche Personnalisée
J'ai suivi la documentation Haystack sur la création de formulaires personnalisés et des vues, mais lorsque je tente de voir la forme que je ne peut obtenir l'erreur:
ValueError at /search/calibration/
The view assetregister.views.calibration_search didn't return an HttpResponse object. It returned None instead.
Ne devrait pas baser cela sur SearchForm prendre soin de renvoyer un objet HttpResponse?
forms.py
from django import forms
from haystack.forms import SearchForm
class CalibrationSearch(SearchForm):
calibration_due_before = forms.DateField(required=False)
calibration_due_after = forms.DateField(required=False)
def search(self):
#First we need to store SearchQuerySet recieved after/from any other processing that's going on
sqs = super(CalibrationSearch, self).search()
if not self.is_valid():
return self.no_query_found()
#check to see if any date filters used, if so apply filter
if self.cleaned_data['calibration_due_before']:
sqs = sqs.filter(calibration_date_next__lte=self.cleaned_data['calibration_due_before'])
if self.cleaned_data['calibration_due_after']:
sqs = sqs.filter(calibration_date_next__gte=self.cleaned_data['calibration_due_after'])
return sqs
views.py
from .forms import CalibrationSearch
from haystack.generic_views import SearchView
from haystack.query import SearchQuerySet
def calibration_search(SearchView):
template_name = 'search/search.html'
form_class = CalibrationSearch
queryset = SearchQuerySet().filter(requires_calibration=True)
def get_queryset(self):
queryset = super(calibration_search, self).get_queryset()
return queryset
urls.py
from django.conf.urls import include, url
from . import views
urlpatterns = [
....
url(r'^search/calibration/', views.calibration_search, name='calibration_search'),
....
]
Argh, de petites choses comme ça me rattrapent encore! Correction qui m'a conduit à une autre erreur 'l'objet n'a aucun attribut 'as_view'', ce qui était parce que j'avais utilisé' def calibration_search (SearchView): 'au lieu de' class calibration_search (SearchView): ' Au moins je peux voir le formulaire correctement maintenant, le seul problème est qu'il ne renvoie aucun résultat, peu importe ce que je recherche ... – TimJ
Avez-vous ajouté les données à l'index de recherche en utilisant la commande 'rebuild_index'? – v1k45
J'ai, je sais que l'index fonctionne comme je peux le voir dans l'interface d'administration en utilisant haystack-browser et mon autre (principal) formulaire de recherche fonctionne toujours parfaitement. Pour une raison quelconque, mon formulaire personnalisé n'obtient aucun résultat. – TimJ