【问题标题】:Django HayStack Get Parameter from URL and update default query accordinglyDjango HayStack 从 URL 获取参数并相应地更新默认查询
【发布时间】:2015-04-16 16:50:56
【问题描述】:

我已经在 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/,它在控制台上打印taqi,对于http://127.0.0.1:8000/users/46000/

city_code 的值是在search_view_factory 类的saerch_view 方法中得到的,但是现在该在哪里将这个值传递给change default query set

【问题讨论】:

    标签: python django solr django-urls django-haystack


    【解决方案1】:

    我认为您应该使用 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())
    )
    

    【讨论】:

      猜你喜欢
      • 2018-05-29
      • 1970-01-01
      • 2021-10-09
      • 2020-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      相关资源
      最近更新 更多