![](/img/trans.png)
[英]How to dynamically change a form in django based on user input (before submission)
[英]How to make Django Query lookup change based on user input
我正在为我的网站制作搜索精炼程序,我正在进行查询,根据用户填写的表单返回相关的列表。问题是表单字段是可选的,我无法弄清楚如何使我的查找更改根据输入的字段。 有人可以建议一个有效的方法吗? 干杯!
查看 -
def browse(request):
business_industry = request.GET.get('business_industry', '')
business_address_region = request.GET.get('business_address_region', '')
employment_type = request.GET.get('employment_type', '')
pay_rate = request.GET.get('pay_rate', '')
keywords = request.GET.get('keywords', '')
form = JobSearchForm()
job_listings = JobListing.objects.exclude(active_listing=False)
if business_industry == '' and business_address_region == '' and keywords == '' and pay_rate == '' and employment_type == '':
print("Nothing has been entered.")
else:
print(job_listings)
print("Something has been entered")
job_listings = JobListing.objects.filter(
Q(job_description__icontains=keywords) &
Q(business_industry=business_industry) &
Q(business_address_region__icontains=business_address_region)
).distinct()
context_dict = {
'joblistings': job_listings,
'form': form
}
return render(request, 'browse.html', context_dict)
我会选择一个简单的解决方案
job_listings = []
if business_industry: job_listings += JobListing.objects.filter(business_industry=business_industry).list()
if keywords: job_listings += JobListing.objects.filter(job_description__icontains=keywords).list()
if business_address_region : job_listings += JobListing.objects.filter(business_address_region__icontains=business_address_region).list()
job_listing = list(set(job_listing))
def browse(request):
business_industry = request.GET.get('business_industry', '')
business_address_region = request.GET.get('business_address_region', '')
employment_type = request.GET.get('employment_type', '')
pay_rate = request.GET.get('pay_rate', '')
keywords = request.GET.get('keywords', '')
form = JobSearchForm()
filters = Q(active_listing=True)
if business_industry:
filters &= Q(business_industry=business_industry)
if business_address_region:
filters &= Q(business_address_region__icontains=business_address_region)
if keywords:
filters &= Q(job_description__icontains=keywords)
job_listings = JobListing.objects.filter(filters).distinct()
context_dict = {
'joblistings': job_listings,
'form': form
}
return render(request, 'browse.html', context_dict)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.