我已经在django中使用haystack + solar实现了搜索功能,现在的情况是我有另一个页面,它将使用相同的功能但只有一个区别。
1st module - http://127.0.0.1:8000/users/
模块显示所有注册用户,然后搜索在此模块上运行,
2nd module - http://127.0.0.1:8000/users/46000/
现在将做什么,它将首先过滤来自城市代码46000的所有用户,然后搜索将在其上运行。
现在我想知道如何使用相同的模块或继承模块1或任何其他想法来最小化代码?
我想要的是在模块1上,我可以检查是否有url parameter
然后更新默认查询吗?这该怎么做 ?
我所做的是
def __call__(self, request, city_code = None):
if city_code == None:
print 'taqi'
else:
print city_code
对于http://127.0.0.1:8000/users/
,它会在控制台和http://127.0.0.1:8000/users/46000/
city_code
的{{1}}类的saerch_view
方法得到此值,但现在将此值传递给search_view_factory
?
答案 0 :(得分:3)
我认为您应该使用其中一个Haystack通用视图 - http://django-haystack.readthedocs.org/en/latest/views_and_forms.html#new-django-class-based-views
代码如下:
from haystack.generic_views import SearchView
class MySearchView(SearchView):
def get_queryset(self):
queryset = super(MySearchView, self).get_queryset()
city_code = self.kwargs.get('city_code')
if city_code:
return queryset.filter(city_code=city_code)
return queryset
# urls.py
urlpatterns = patterns('',
url(r'^/users/$', MySearchView.as_view()),
url(r'^/users/(?P<city_code>\d+)/$', MySearchView.as_view())
)