问题描述
我不确定标题中是否使用了正确的术语,是否阅读了多面搜索,但涉及使用ElasticSearch,并且我希望它尽可能地简单。
因此,基本上我想做的是能够过滤包含“城市”和“语言”的对象列表。如果我选择一种特定的语言,那么我想查看所有城市使用this
语言的对象列表。然后,如果需要,我想进一步使用特定城市过滤此列表。反之亦然-首先是城市,然后是语言。
这就是我到目前为止所做的:
forms.py
class SearchForm(forms.Form):
city = forms.ModelChoiceField(queryset=City.objects.all(),to_field_name='slug',required=False,label='City')
language = forms.ModelChoiceField(queryset=Language.objects.all(),label='Language')
views.py
class HomePageView(FormView,ListView):
model = Vacancy
template_name = 'home.html'
form_class = SearchForm
context_object_name = 'vacancies'
def get_queryset(self):
city = self.request.GET.get('city')
language = self.request.GET.get('language')
if city or language:
_filter = {}
if city:
_filter['city__slug'] = city
if language:
_filter['language__slug'] = language
context = Vacancy.objects.filter(**_filter)
else:
context = Vacancy.objects.all()
return context
home.html
{% block content %}
<h1>List of vacancies</h1>
{% for vacancy in vacancies %}
<p>{{ vacancy }}</p>
{% empty %}
<h3>No vacancies</h3>
{% endfor %}
<form action="">
{{ form.as_p }}
<input type="submit" value="Filter">
</form>
{% endblock content%}
这很好用,但是可以说没有杂音。
我可以选择城市,它将为我提供this
所有语言的城市。如果我随后选择一种特定的语言,它将重新加载表单,然后为我提供所有使用this
语言的城市。
为了向下钻取列表,我选择了城市和语言,然后过滤列表。很好,但是如果我可以实现这种动态过滤,那就更好了。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)